1. Введение в MyBatis
В 2001 году Клинтон Бегин запустил проект с открытым исходным кодом под названием iBATIS, который первоначально был сосредоточен на исследованиях и разработках криптографического программного обеспечения, а затем превратился в структуру уровня сохраняемости на основе Java.
В 2004 году Клинтон передал название и исходный код iBATIS фонду Apache Software Foundation.
В 2010 году основная группа разработчиков решила покинуть Apache Software Foundation и переименовала iBATIS в MyBatis.
MyBatis — это превосходная структура уровня сохраняемости, которая поддерживает пользовательские SQL-запросы, хранимые процедуры и расширенные сопоставления, устраняя почти весь код JDBC и ручную настройку параметров, а также извлечение набора результатов. MyBatis может использовать XML или аннотации для настройки и сопоставления.MyBatis формирует окончательный исполняемый оператор SQL, сопоставляя параметры с настроенным SQL, и, наконец, сопоставляет результат выполнения SQL с возвращаемым объектом Java.
В отличие от других фреймворков ORM (Object Relational Mapping), MyBatis не связывает объекты Java с таблицами базы данных, а связывает методы Java с операторами SQL.
Объяснение: Просто поймите приведенный выше контент, потому что, согласно моему стилю, я не особенно люблю вещи, которые являются чисто теоретическими и текстовыми. Читатели, которые читали мои предыдущие блоги, могут знать это. Я предпочитаю конкретный кодовый бой, например, как использовать новую технологию. Определенный фрагмент кода должен решить какую проблему...
2. Создайте проект Maven
Для получения соответствующего содержания Maven вы можете обратиться к моему предыдущему блогу.Начало работы с Spring (4): использование Maven для управления проектами Spring.
Я всегда думал, что лучший способ понять технологию — это рассмотреть конкретный пример, например Hello World, ха-ха.
Итак, нам нужен новый проект Maven, проект Maven с использованием нового метода IDEA выглядит следующим образом:
Структура только что созданного проекта Maven выглядит следующим образом:
Содержимое сгенерированного по умолчанию файла pom.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zwwhnly</groupId>
<artifactId>mybatis-action</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
Во-первых, мы устанавливаем кодировку исходного кода в UTF-8:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Далее устанавливаем версию JDK для компиляции исходников, здесь мы временно используем 1.6, вы можете модифицировать ее под свои реальные потребности, например модифицировать на 1.8:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Затем добавьте важные координаты, зависящие от MyBatis, и зависимые координаты, управляемые mysql:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
Наконец, добавьте зависимые координаты используемых Log4j и JUnit, и окончательное содержимое файла pom.xml будет следующим:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zwwhnly</groupId>
<artifactId>mybatis-action</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
В IDEA, если нет специальной настройки, после модификации pom-файла нужно импортировать его вручную, иначе будет так:
Как импортировать вручную? Нажмите «Импортировать изменения» в правом нижнем углу IDEA.
На данный момент проект Maven создан.
3. Простой пример
3.1 Подготовка данных
Сначала выполните следующую инструкцию, чтобы создать базу данных mybatis_action_db:
CREATE DATABASE mybatis_action_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Затем выполните следующее утверждение, чтобы создать таблицу страны и добавить некоторые данные:
use mybatis_action_db;
CREATE TABLE country
(
id INT NOT NULL AUTO_INCREMENT,
countryname VARCHAR(255) NULL,
countrycode VARCHAR(255) NULL,
PRIMARY KEY (id)
);
INSERT country(countryname, countrycode)
VALUES ('中国', 'CN'),
('美国', 'US'),
('俄罗斯', 'RU'),
('英国', 'GB'),
('法国', 'FR');
3.2 Настройка MyBatis.
Сначала создайте файл конфигурации mybatis-config.xml в каталоге src/main/resources.Чтобы создать файл mybatis-config.xml быстрее, мы можем добавить шаблон следующим образом:
Затем введите следующее:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="com.zwwhnly.mybatisaction.model"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_action_db"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/zwwhnly/mybatisaction/mapper/CountryMapper.xml"/>
</mappers>
</configuration>
Простое объяснение конфигурации:
-
<settings>
Конфигурация свойства logImpl в узле задает вывод журнала с использованием LOG4J. -
<typeAliases>
Под элементом настраивается имя пакета.Обычно при определении класса необходимо использовать полное имя класса, например com.zwwhnly.mybatisaction.model.Country. Полное имя класса нужно часто использовать в MyBatis.Для удобства использования мы настроили пакет com.zwwhnly.mybatisaction.model.После этой настройки нет необходимости писать часть имени пакета при использовании класса используется только Country. -
<environments>
Подключение к базе данных в основном настраивается в конфигурации среды, например, здесь мы используем базу данных mybatis_action_db в локальном MySql, имя пользователя — root, а пароль отсутствует (вы можете изменить базу данных, имя пользователя и пароль в соответствии с вашими реальная ситуация). -
<mappers>
Сегодняшний путь .xml, содержащий полную классную пункт, настроен в той, что является MyBatis SQL-оператор и файл конфигурации сопоставления.
3.3 Создайте класс сущности и файл Mapper.xml
Создайте новый пакет в src/main/java: com.zwwhnly.mybatisaction, а затем создайте пакет в этом пакете: model.
Создайте класс сущности Country, соответствующий таблице страны таблицы базы данных в пакете модели:
package com.zwwhnly.mybatisaction.model;
public class Country {
private Integer id;
private String countryname;
private String countrycode;
// 按Alt+Insert快捷键生成get和set方法
}
Создайте каталог com/zwwhnly/simple/mapper в папке src/main/resources, а затем создайте в этом каталоге файл CountryMapper.xml.Чтобы создать файл Mapper.xml быстрее, мы можем обратиться к приведенному выше, чтобы добавить mybatis. -config Метод шаблона xml здесь повторяться не будет.
Содержание конечного файла Servicapper.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zwwhnly.mybatisaction.mapper.CountryMapper">
<select id="selectAll" resultType="Country">
SELECT id,countryname,countrycode from country
</select>
</mapper>
Простое объяснение конфигурации:
- mapper: корневой элемент XML, пространство имен атрибутов определяет пространство имен текущего XML.
- select: запрос Select, который мы определили.
- Атрибут id: определяет уникальный идентификатор текущего запроса Select.
- resultType: определяет тип возвращаемого значения текущего запроса, здесь относится к классу сущности Country, здесь в основном используется имя пакета, упомянутое в предыдущей конфигурации, если имя пакета не задано, его нужно записать как resultType=" com.zwwhnly.mybatisaction.model.Country".
- ВЫБЕРИТЕ идентификатор, название страны, код страны из страны: оператор запроса SQL.
3.4 Настройте Log4j для просмотра процесса работы MyBatis с базой данных
Создайте новый файл конфигурации log4j.properties в папке src/main/resources и введите следующее:
log4j.rootLogger=ERROR, stdout
log4j.logger.com.zwwhnly.mybatisaction.mapper=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
3.5 Написание тестового кода
Создайте пакет в src/test/java: com.zwwhnly.mybatisaction.mapper, а затем создайте тестовый класс CountryMapperTest со следующим кодом:
package com.zwwhnly.mybatisaction.mapper;
import com.zwwhnly.mybatisaction.mapper.model.Country;
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 org.junit.BeforeClass;
import org.junit.Test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class CountryMapperTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void init() {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testSelectAll() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
List<Country> countryList = sqlSession.selectList("selectAll");
printCountryList(countryList);
} finally {
sqlSession.close();
}
}
private void printCountryList(List<Country> countryList) {
for (Country country : countryList) {
System.out.printf("%-4d%4s%4s\n", country.getId(), country.getCountryname(), country.getCountrycode());
}
}
}
Запустив тестовый код, выходной журнал выглядит следующим образом:
DEBUG [main] - ==> Preparing: SELECT id,countryname,countrycode from country
DEBUG [main] - ==> Parameters:
TRACE [main] - <== Columns: id, countryname, countrycode
TRACE [основная] -
Трассировка [Главная] -
TRACE [основная] -
TRACE [основной] -
TRACE [основная] -
DEBUG [main] - <== Total: 5
1 Китай CN
2 США США
3 Россия RU.
4 UK GB.
5 Франция Франция
4. Исходный код и ссылка
Адрес источника:GitHub.com/Как Ухань, где/каждый шаг…, добро пожаловать на скачивание.
Лю Цзэнхуэй "MyBatis от входа до мастерства"