简介
为了全面熟悉 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 目录下存放配置文件;
 
如何启动项目
- 在数据库中建表,建表语句在 db 目录
 - 修改 application.yml 配置,通过 Application 类启动项目
 
配置
数据源配置
#druid数据源spring:datasource:druid:url: jdbc:mysql://localhost:3306/mybatis-demo?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=trueusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverinitial-size: 5max-active: 100min-idle: 5max-wait: 60000pool-prepared-statements: falsemax-pool-prepared-statement-per-connection-size: 200validation-query: SELECT 'x'test-on-borrow: falsetest-on-return: falsetest-while-idle: truetime-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 300000filters: stat
MyBatis 配置
#mybatis配置mybatis:type-aliases-package: com.yjw.demo.mybatis.biz.pojo.entity;com.yjw.demo.mybatis.biz.pojo.querymapper-locations: classpath:mapper/*.xmlconfiguration:lazy-loading-enabled: trueaggressive-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 扫描配置
/*** 启动,配置类** @author yinjianwei* @date 2017/12/06*/@SpringBootApplication@MapperScan("com.yjw.demo.mybatis.biz.dao")public class Application {public static void main(String[] args) throws Exception {SpringApplication.run(Application.class, args);}}
启动类 Application 中配置了 @MapperScan 会自动扫描该路径下的所有 Mapper 类。
作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/igb6d0 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
