Серия SpringBoot — интеграция Mybatis (конфигурация XML)

Spring Boot
Серия SpringBoot — интеграция Mybatis (конфигурация XML)

В этой статье представлен процесс интеграции SpringBoot с Mybatis (конфигурация XML).

1. Что такое MyBatis?

MyBatis — это превосходная структура уровня сохраняемости, которая поддерживает пользовательский SQL, хранимые процедуры и расширенное сопоставление. MyBatis избегает почти всего кода JDBC и ручной настройки параметров и выборки наборов результатов. MyBatis может использовать простой XML или аннотации для настройки и сопоставления собственных типов, интерфейсов и Java POJO (обычных старых объектов Java) с записями в базе данных.

Во-вторых, метод интеграции

Существует также два способа интеграции Mybatis в SpringBoot, а именно конфигурация XML и аннотации.Основные преимущества заключаются в следующем:

  1. Метод аннотации: Код более лаконичен и удобен.
  2. Метод конфигурации XML: изолируйте sql и бизнес-код, четко выражайте sql, особенно для длинных sql.

XML-файл сопоставления также прост и содержит всего несколько элементов верхнего уровня:

  • cache — конфигурация кеша для данного пространства имен.
  • cache-ref — ссылка на другие конфигурации кэша пространства имен.
  • resultMap — самый сложный и мощный элемент, описывающий, как загружать объекты из набора результатов базы данных.
  • sql — блок многократно используемых операторов, на который могут ссылаться другие операторы.
  • вставка — Сопоставляет операторы вставки.
  • update — операторы обновления карты.
  • delete — сопоставить операторы удаления.
  • select — оператор запроса карты.

В этой статье представлен метод конфигурации XML, а в последующих статьях будет представлен метод аннотации.

В-третьих, актуально

Новый проект Spring Boot Spring-Boot-MyBatis-XML, выполните следующие действия.

  1. Вставьте банку в pom.xml

В основе интеграции MyBatis лежит использование MyBatis-Spring-Boot-Starter, который обеспечивает:

  • Существующий источник данных определяется автоматически.
  • Будет создан и зарегистрирован экземпляр SqlSessionFactory, который использует SqlSessionFactoryBean для передачи этого источника данных в качестве входных данных.
  • Экземпляр SqlSessionTemplate, полученный из SqlSessionFactory, будет создан и зарегистрирован.
  • Автоматически сканируйте ваши преобразователи, связывайте их с SqlSessionTemplate и регистрируйте их в контексте Spring, чтобы их можно было внедрить в ваши bean-компоненты.

Важным содержанием pom.xml является следующее:

<!-- mybatis-starter  -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

<!-- MySQL 连接驱动依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
  1. Добавьте конфигурацию в application.yml

Добавьте конфигурацию источника данных и mybatis в application.yml следующим образом:

spring:
  #数据源
  datasource:
    url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
#mybatis配置
mybatis:
  typeAliasesPackage: com.example.springboot.mybatisxml.entity
  mapperLocations: classpath:mapper/*.xml
  config-location: classpath:mybatis-config.xml
  1. Добавить файл сопоставления пользователя

Содержимое UserMapper.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.example.springboot.mybatisxml.dao.mapper.UserMapper" >
    <resultMap id ="UserMap" type="com.example.springboot.mybatisxml.entity.User">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="sex" property="sex"/>
        <result column="password" property="password"/>
        <result column="des" property="des"/>
    </resultMap>

    <select id = "queryAllUsers" resultType= "com.example.springboot.mybatisxml.entity.User">
      select * from user
    </select>
</mapper>
  1. Добавить интерфейс дао

Имя интерфейса совпадает с именем файла сопоставления, а имя метода в интерфейсе совпадает с идентификатором тега в вызываемом файле сопоставления.

Код UserMapper.java выглядит следующим образом:

public interface UserMapper {

    List<User> queryAllUsers();
}
  1. Добавить уровень контроля доступа

Код UserController выглядит следующим образом:

/**
 * UserController
 *
 * @Author: java_suisui
 *
 */
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 查询 所有用户
     *
     */
    @GetMapping("/queryAllUsers")
    public List<User> queryAllUsers(){
        return userService.queryAllUsers();
    }
}

4. Тест

Откройте браузер локально и посетите http://localhost:8080/user/queryAllUsers. После успеха возвращаются следующие результаты:

[{"id":1,"name":"张三","password":"123456","sex":0,"des":"无备注"},
{"id":2,"name":"李四","password":"123456","sex":0,"des":"无备注"}]

На данный момент функции SpringBoot по интеграции Mybatis (метод конфигурации XML) полностью реализованы.Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение для связи!

Полный исходный адрес:GitHub.com/Smash2019/…

Рекомендуемое чтение

1. Печать логов на Java, эти 4 пункта очень важны!

2. SpringBoot интегрирует JWT для реализации аутентификации авторизации.

3. Позвольте вам понять аутентификацию JWT за одну минуту!

4. Как элегантно прочитать файл конфигурации yml в SpringBoot?

5. Как гибко реализовать функцию шифрования и дешифрования данных интерфейса в SpringBoot?


Получите бесплатные материалы по Java в течение ограниченного времени, охватывающие Java, Redis, MongoDB, MySQL, Zookeeper, Spring Cloud, Dubbo/Kafka, Hadoop, Hbase, Flink и другие распределенные технологии с высокой степенью параллелизма, большие данные, машинное обучение и другие технологии. Подпишитесь на публичный аккаунт ниже, чтобы получить его бесплатно: