Spring Boot + Mybatis 快速整合

引言

最近在工作结束后抽时间学习了一下mybatis的知识,因为之前有学习过,但是经久不用,也未曾踏实地整理,因此有所淡忘。

super meeting会议管理系统是我厂最近开发的一套会议预约平台。持久层框架经讨论,选为灵活优秀的半自动持久层框架Mybatis。

关于mybatis的有点和简介不做本系列学习博客的重点,在此不做记录。

学习的方式采用视频+实践的学练组合方式。结合一直接触的spring boot框架,重温mybatis的使用和各种应用场景的解决方案。

学习的视频连接:https://www.bilibili.com/video/av21272940

项目搭建

pom依赖

项目采用maven管理的spring boot方式,添加pom依赖:

此处需要引入Mybatis的spring boot start包 和 mysql的驱动依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

这两项依赖可以直接在spring boot初始化界面的Search for dependencies 中找到:https://start.spring.io/

如何搭建spring boot项目,请参考《SpringBoot————快速搭建springboot项目

建库建表

为方便日后学习mapper的使用,此处直接建立两张关联表:dept(部门表)employee(员工表)

插入测试数据:

数据源配置

servert.port=8080
#mysql
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

此处先简单配置数据源,mybatis相关配置稍后介绍。

定义接口与Mapper配置文件

根据mybatis的接口式编程方式,定义数据库操作方法的api可以与Mapper进行动态绑定。

接口与mapper.xml文件进行绑定后,调用接口中的增删改查时,Mybatis会为用户创建一个代理对象,由这个代理对象执行操作。

Mapper接口

@Mapper
public interface EmpDao {
    /**
     * 根据员工id查找员工
     */
    Employee getEmpById(Integer empId);
}

@Mapper代表这是一个mybatis可以识别的Mapper接口。

mybatis的mapper-locations配置项、@Mapper注解、<mapper>标签的namespace属性,三者可以使mybatis找到任意目录下的Mapper配置文件以及与其绑定的接口。因此,接口名称可以根据喜好使用Dao或者Mapper结尾,并没有限制。

Mapper.xml配置

添加mybatis 的mapper.xml文件约束:

官网查找地址:http://www.mybatis.org/mybatis-3/getting-started.html

<?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.demo.dao.EmpDao">
    <select id="getEmpById"  resultType="com.example.demo.entity.Employee">
        SELECT * FROM employee WHERE emp_id = #{empId}
    </select>
</mapper>

namespace指定绑定接口的全类名;id标识接口中与之绑定的方法;resultType表示返回值类型;#{empId}此处的empId代表接口中传入的参数(这里注意,如果是一个参数mybatis不会特殊处理;如果是多个参数,参数必须指定参数名,否则会报错!后续文章会说明这个问题。)

小提示:添加dtd约束后,如果在书写xml的时候没有任何提示,则可以在联网状态下Ctrl+左键点击约束中的链接“http://mybatis.org/dtd/mybatis-3-mapper.dtd”,这样可以加载xml的提示内容。

全局配置

最开始的spring 整合 mybatis的版本都是使用mybatis-config.xml配置文件,进行数据源,以及各种配置信息的配置。

当然这些配置项依然不变,变化的是配置项书写的方式,以及去掉了mybatis-config全局配置文件。

官网中提供了有关spring boot需要的mybatis的全部配置信息:

http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/index.html

而configuration属性,更是包含了其他更加详细的settings项:

NOTE configuration property cannot be used at the same time with the config-location.

在configuration中,包含诸如mapUnderscoreToCamelCase(下划线转驼峰)、lazyLoadingEnabled(懒加载)、aggressiveLazyLoading(侵入式懒加载)、cacheEnabled(全局缓存)等配置项都是configuration中的子配置项。

项目搭建所需的简单配置项如下:

#mybatis
mybatis.mapper-locations=classpath:com/example/demo/dao/xml/*.xml
mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.type-aliases-package=com.example.demo.entity

最后观察一下我们的项目结构:

测试

为了简便测试,我们定义一个controller直接调用dao层的方法,以此来进行方法的测试,web接口采用RESTful 风格。

@RestController
@RequestMapping("/emps")
public class EmpController {
    @Autowired
    private EmpDao empDao;
    
    @GetMapping("/{empId}")
    public Employee getEmpById(@PathVariable Integer empId) {
        return empDao.getEmpById(empId);
    }
}

浏览器调用接口:

 

综上,就是关于spring boot + mybatis 的简单整合与使用,后续会进行更加深入的学习和使用。

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页