Из этого туториала вы узнаете, как выполнить настройку MyBatis 3 с вашей базой данных. MyBatis 3 поддерживает конфигурации как на основе xml, так и на основе аннотаций, но реальную мощь MyBatis можно увидеть при работе с конфигурацией xml. Этот учебник покажет вам только конфигурацию с использованием XML.
Используемые инструменты:
- MyBatis 3.0.4
- MySql Java Connector 5.1
Использование MyBatis не требует большого количества банок, нужен только баночка MyBatis с драйвером:
- Обще-каротаж 1.1.1.jar
- mybatis-3.0.4.jar
- MySQL-разъем-Java-5.1.13-bin.jar
В этом уроке мы настроим MyBatis для хранения объекта класса pojo в таблице базы данных. Ниже приведена таблица базы данных, которую мы будем использовать в этом примере:
|
1
2
3
|
CREATE TABLE Product(id int primary key, brand varchar(20), model varchar(20), name varchar(30)); |
Итак, прежде всего, создайте эту таблицу в базе данных, которую вы хотите использовать для хранения.
Ниже приведен класс Product, который будет сопоставлен с таблицей product:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.raistudies.domain;import java.io.Serializable;public class Product implements Serializable{ private static final long serialVersionUID = -1900054678340682193L; private long id; private String brand; private String model; private String name; // Getter and setter are removed to make the short} |
Мы увидим, какую конфигурацию необходимо выполнить для отображения вышеизложенного в таблицу базы данных product.
В MyBatis 3 у нас есть два типа файлов конфигурации:
Файл конфигурации спецификации среды: будет только один файл, который определит параметры среды, которые будут использоваться структурой сопоставления MyBatis. Этот файл определяет настройки, связанные с подключением к базе данных, драйвером, управлением транзакциями, пулом подключений, другими файлами сопоставления и многим другим, что мы увидим в следующих уроках.
Файлы сопоставления: может быть несколько файлов сопоставления в одном приложении для платформы MyBatis. Файл отображения содержит информацию о наборе связанных служб, который определен в интерфейсе Java. Он определяет параметризованный оператор SQL, который будет использоваться для конкретной службы, ввод данных в параметры SQL, а также определяет отображение возврата для результирующих данных, если они возвращаются оператором SQL.
Это означает, что в нашем примере у нас будет два xml-файла: один для настройки среды, а другой будет файл сопоставления для сервисов, связанных с классом Product.
Ниже приведен XML-файл конфигурации спецификации среды:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"<configuration> <settings> <setting name="lazyLoadingEnabled" value="false" /> </settings> <typeAliases> <typeAlias type="com.raistudies.domain.Product" alias="product"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost/test"/> <property name="username" value="root"/> <property name="password" value="pass"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/raistudies/services/ProductServices.xml"/> </mappers></configuration> |
Как вы можете видеть, <configuration /> содержит конфигурацию, и есть ряд тегов, которые определяют настройки для структуры отображения MyBatis. Мы увидим все вышеперечисленные настройки по очереди:
<settings /> : этот тег используется для указания некоторых общих настроек, которые должны использоваться для всего приложения MyBatis. В приведенном выше файле содержится пример установки свойства lazyLoadingEnabled для отключения. Мы увидим больше настроек в следующих уроках.
<typeAliases>: тег позволит использовать определение псевдонима для классов нашего домена, которые мы можем использовать позже в любом файле конфигурации MyBatis.
<environment />: тег используется для определения настроек, связанных с базой данных. У нас может быть несколько параметров среды, но MyBatis будет использовать одну среду одновременно, которая будет указана свойством по умолчанию .
<mappers>: этот тег используется для определения местоположения xml-файла, в котором отображаются файлы. Мы можем определить более одного файла сопоставления.
Определение сервиса в интерфейсе:
После этого вам нужно создать интерфейс, который будет определять сервис, который мы хотим предоставить. После интерфейса is, который определяет только один метод «save» для класса домена Product:
|
1
2
3
4
5
6
7
|
package com.raistudies.services;import com.raistudies.domain.Product;public interface ProductServices { public void save(Product product);} |
Теперь мы должны определить файл сопоставления для этого сервиса. Ниже приведен файл сопоставления для интерфейса:
|
01
02
03
04
05
06
07
08
09
10
11
12
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <mapper namespace="com.raistudies.services.ProductServices"> <insert id="save" parameterType="product"> INSERT INTO Product (id,brand,model,name) VALUE ( #{id}, #{brand}, #{model}, #{name} ) </insert> </mapper> |
Файл отображения будет содержать элемент <mapper /> для определения оператора SQL для сервисов. Здесь свойство « пространство имен » определяет интерфейс, для которого был определен этот файл сопоставления.
Тег <insert /> определяет, что операция имеет тип вставки. Значение свойства « id » указывает имя функции, для которой определена операция. Здесь это сохранить. Свойство « parameterType » определяет параметр метода того или иного типа. Мы использовали псевдоним для класса Product здесь. Затем мы должны определить оператор SQL. # {id} определяет, что свойство « id » класса Product будет передано в качестве параметра в SQL-запрос.
Создание MyBatis Session и использование сервиса продукта:
Ниже приведен наш тестовый класс, который создает Session of MyBasit, а затем использует метод save интерфейса ProductService для сохранения экземпляра класса Product:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package com.raistudies.runner;import java.io.IOException;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.raistudies.domain.Product;import com.raistudies.services.ProductServices;public class AppTester { private static SqlSessionFactory sessionFac = null; private static Reader reader; private static String CONFIGURATION_FILE = "sqlmap-config.xml"; static{ try { reader = Resources.getResourceAsReader(CONFIGURATION_FILE); sessionFac = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { SqlSession session = sessionFac.openSession(); try { ProductServices productServiceObj = session.getMapper(ProductServices.class); Product product = new Product(); product.setId((long)(Math.random()*100)); product.setBrand("LG"); product.setModel("P500"); product.setName("Optimus One"); productServiceObj.save(product); session.commit(); } finally { session.close(); } }} |
Метод session.getMapper () предоставляет реализацию интерфейса по умолчанию, которая определяется платформой MaBatis во время выполнения.
При выполнении этого примера запись сохраняется в таблицу базы данных.
|
| MyBatis Конфигурация Вставить Результат оператора |
Вы также можете попробовать пример, загрузив код примера по ссылкам ниже:
Источник + lib: Скачать
Ссылка: Настройка MyBatis 3 от нашего партнера JCG Рахула Мондала в блоге Rai Studies .
