Из этого туториала вы узнаете, как выполнить настройку 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 configuration PUBLIC "-//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 .