简介

为了全面熟悉 MyBatis 的使用,整理一个 MyBatis 的例子,案例中包含了映射器动态 SQL 的使用。本章先介绍项目结构和配置。

项目结构

  • 项目框架:Spring Boot、MyBatis、Mybatis-PageHelper、Druid、Swagger;
  • db 目录存放数据库 SQL 文件,项目中使用的表可以通过该 SQL 创建;
  • com.yjw.demo.mybatis.biz 目录存放业务相关的类;
  • com.yjw.demo.mybatis.common 目录存放公共配置类;
  • Application 类为启动类;
  • resources 目录下存放配置文件;

如何启动项目

  1. 在数据库中建表,建表语句在 db 目录
  2. 修改 application.yml 配置,通过 Application 类启动项目

配置

数据源配置

  1. #druid数据源
  2. spring:
  3. datasource:
  4. druid:
  5. url: jdbc:mysql://localhost:3306/mybatis-demo?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=true
  6. username: root
  7. password: 123456
  8. driver-class-name: com.mysql.jdbc.Driver
  9. initial-size: 5
  10. max-active: 100
  11. min-idle: 5
  12. max-wait: 60000
  13. pool-prepared-statements: false
  14. max-pool-prepared-statement-per-connection-size: 200
  15. validation-query: SELECT 'x'
  16. test-on-borrow: false
  17. test-on-return: false
  18. test-while-idle: true
  19. time-between-eviction-runs-millis: 60000
  20. min-evictable-idle-time-millis: 300000
  21. filters: stat

MyBatis 配置

  1. #mybatis配置
  2. mybatis:
  3. type-aliases-package: com.yjw.demo.mybatis.biz.pojo.entity;com.yjw.demo.mybatis.biz.pojo.query
  4. mapper-locations: classpath:mapper/*.xml
  5. configuration:
  6. lazy-loading-enabled: true
  7. aggressive-lazy-loading: false
  • type-aliases-package:它一般对应我们的实体类所在的包,这个时候会自动取对应包中类名作为别名,不区分大小写,多个 package 之间可以用逗号或者分号等来进行分隔;
  • mapper-locations:映射文件地址;
  • lazy-loading-enabled:开启延迟加载,使得关联属性都按需加载,而不自动加载;
  • aggressive-lazy-loading:设置为 true 时,MyBatis 的内容按层级加载,相同层级的数据会被加载出来,比如加载学生信息的时候,它会根据鉴别器去找到健康的情况,而当我们访问课程成绩的时候,由于学生证和课程成绩是一个层级,它也会去访问学生证的信息;

lazy-loading-enabled、aggressive-lazy-loading 这两个配置在级联那块会详细描述。

注意:如果这里配置了 configuration,MyBatis 配置文件(mybatis-config.xml)中就不能再配置了,两个地方都配置存在冲突,不能共用。

Dao 扫描配置

  1. /**
  2. * 启动,配置类
  3. *
  4. * @author yinjianwei
  5. * @date 2017/12/06
  6. */
  7. @SpringBootApplication
  8. @MapperScan("com.yjw.demo.mybatis.biz.dao")
  9. public class Application {
  10. public static void main(String[] args) throws Exception {
  11. SpringApplication.run(Application.class, args);
  12. }
  13. }

启动类 Application 中配置了 @MapperScan 会自动扫描该路径下的所有 Mapper 类。

作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/igb6d0 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。