Статьи

Настройка MyBatis 3

MyBatis — это очень популярная, а также наиболее эффективная среда отображения SQL. MyBatis доступен как на языке Java, так и на языке .net. MyBatis на самом деле не является альтернативой Hibernate, но мы можем использовать эту платформу для сокращения кода, связанного с нашей базой данных, за счет эффективной и высокой производительности, предоставляемой MyBatis.

Из этого туториала вы узнаете, как выполнить настройку MyBatis 3 с вашей базой данных. MyBatis 3 поддерживает конфигурации как на основе xml, так и на основе аннотаций, но реальную мощь MyBatis можно увидеть при работе с конфигурацией xml. Этот учебник покажет вам только конфигурацию с использованием XML.


Используемые инструменты:

  1. MyBatis 3.0.4
  2. MySql Java Connector 5.1

Использование MyBatis не требует большого количества банок, нужен только баночка MyBatis с драйвером:

  1. Обще-каротаж 1.1.1.jar
  2. mybatis-3.0.4.jar
  3. MySQL-разъем-Java-5.1.13-bin.jar

В этом уроке мы настроим MyBatis для хранения объекта класса pojo в таблице базы данных. Ниже приведена таблица базы данных, которую мы будем использовать в этом примере:

Example Code Sample
1
2
3
CREATE TABLE Product(id int primary key, brand varchar(20),
 
 model varchar(20), name varchar(30));

Итак, прежде всего, создайте эту таблицу в базе данных, которую вы хотите использовать для хранения.
Ниже приведен класс Product, который будет сопоставлен с таблицей product:

Example Code Sample
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-файл конфигурации спецификации среды:

Example Code Sample
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:

Example Code Sample
1
2
3
4
5
6
7
package com.raistudies.services;
 
import com.raistudies.domain.Product;
 
public interface ProductServices {
    public void save(Product product);
}

Теперь мы должны определить файл сопоставления для этого сервиса. Ниже приведен файл сопоставления для интерфейса:

Example Code Sample
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:

Example Code Sample
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 .