MyBatis使用文档

为了方便 MyBatis 的使用,整理编写了一个 MyBatis 的例子,各种映射器、动态 SQL 的使用都可以在例子中找到,接下来我们详细描述项目的情况。

MyBatis 官网文档:http://www.mybatis.org/mybatis-3/zh/index.html

项目地址:https://gitee.com/yin_jw/demo.git

数据库表的模型关系:https://www.processon.com/view/link/5baf4a2ce4b0d4d65c1ca52a

结论
  1. resultMap 的级联操作不要使用
  2. 二级缓存不要使用

这两个功能只是看起来美好,实际使用起来很多坑。虽然 resultMap 的级联操作很坑,但是例子中还是简单实现了一下。

如何让实例跑起来
  1. 在数据库中建表,建表语句在的 db 目录
  2. 修改 application.yml 配置,通过 Application.java 类启动项目
配置

项目中没有使用 MyBatis 配置文件(mybatis-config.xml),项目使用了 Spring Boot 框架,简化了 MyBatis 的配置。下面介绍一下项目中各处的 MyBatis 配置内容。

  1. Spring Boot 配置文件(application-dev.yml)中的 MyBatis 配置,这些配置在项目启动的时候由 spring-boot-autoconfigure-1.5.9.RELEASE.jar、mybatis-spring-boot-autoconfigure-1.3.1.jar 负责加载,这就是 Spring Boot 的方便之处。

《MyBatis使用文档》
《MyBatis使用文档》

  1. Spring Boot 启动类(Application)中配置 dao 类的包名

《MyBatis使用文档》

  1. 增加了一个性别枚举的类型处理器(SexEnumTypeHandler),该类型处理器会在配置在 Mapper 映射文件(StudentMapper.xml)中,处理学生的性别数据。

《MyBatis使用文档》

映射器

参考 StudentMapper.xml 文件,各种元素的使用在里面都有详细的例子。简单的元素使用这里就不做详细介绍了,具体内容可以直接参考该 xml 文件。

  1. SQL映射文件的几个顶级元素

cache 和 cache-ref 有坑,不适合分布式服务,这里就不做介绍了,其实单节点服务也不建议使用,二级缓存是坑。

元素名称描述备注
select查询语句可以自定义参数,返回结果集等
insert插入语句执行后返回一个整数,代表插入的条数
update更新语句执行后返回一个整数,代表更新的条数
delete删除语句执行后返回一个整数,代表删除的条数
parameterMap定义参数映射关系即将被删除的元素,不建议大家使用
sql允许定义一部分的SQL,然后在各个地方引用它例如,一张表列名,我们可以一次定义,在多个SQL语句中使用
resultMap用来描述从数据库结果集中来加载对象它将提供映射规则
cache给定命名空间的缓存配置
insert其他命名空间缓存配置的引用
  1. 级联和延迟加载

《MyBatis使用文档》

在 application-dev.yml 配置文件中开启了全局延迟加载功能,例如我们取出学生信息,不会级联取出学生成绩和学生证信息,只有在访问学生成绩属性的时候 MyBatis 才会去发送 SQL 去取出学生成绩的信息。

注意:在代码中有两种级联方式,具体使用参考StudentMapper.xml

动态SQL
  1. MyBatis 的动态 SQL 包括以下几种元素
元素名称描述备注
if判断语句单条件分支判断
choose(when、otherwise)相当于Java中的case when语句多条件分支判断
trim(where、set)辅助元素用于处理一些SQL拼装问题
foreach循环语句在in语句等列举条件常用

具体元素的使用在StudentMapper.xml都有体现,大家一看就明白。如果对元素描述的不到位的,可以参考MyBatis的官网文档,链接在文档的最上方。

  1. 新增数据返回主键ID

这里提一下吧,也便于大家了解这方面的写法,我觉得框架的使用不需要记忆,只需要有个使用例子方便我们 Ctrl + c、Ctrl + v

《MyBatis使用文档》

最后

MyBatis 的插件使用属于高级篇没有在这里描述,后面有时间了,我再去了解一下 罒ω罒 罒ω罒 罒ω罒

    原文作者:殷建卫
    原文地址: https://www.jianshu.com/p/5430541e15b9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞