一、动态sql
MyBatis中sql语句是核心,使用mapper代理,只有接口,没有实现类,所以sql的写法比较重要。
案例
需求
综合条件查询用户数量,对查询条件进行判断,输入参数不为空,才进行查询条件的拼接。
接口
映射
测试
性别为1,且名字中有“明”字的人数
性别为1的人数
二、sql片段
同一段sql代码,会用于多个地方,如果重复编写,代码冗余。
案例
需求
综合条件查询用户信息,对查询条件进行判断,输入参数不为空,才进行查询条件的拼接。
接口
映射
测试
三、foreach标签
向sql语句中传递数组或list集合参数,使用foreach来进行解析
案例
需求
查询指定id的用户信息
SQL语句的写法
select * from user where (id=1 or id=10 or id=16)
select * from user where id in(1,10,16)
VO
并自动生成getter和setter方法
接口
映射
或者
测试
四、查询缓存
查询缓存是企业级卡法中必用技术。 什么是缓存?
提高速度用的技术
MyBatis中有两种缓存
一级缓存
二级缓存
一级缓存
session级缓存,自动,无需配置
在一个session操作中,数据已经有的,MyBatis会自动去session中查找,就不去数据库中找了
测试
二级缓存
跨session的缓存,即在session之间也能起作用,需要配置
SqlMapConfig.xml
添加缓存配置文件
ehcache.xml
需要缓存对象的mapper映射配置
对象需要设定能被缓存
测试
五、逆向工程
MyBatis官方提供了从单表数据表生成:po对象,mapper接口,mapper映射文件
新建Module(或者Project),同时添加jar包库。项目结构
配置文件
运行生成类
生成结果
写在最后:
本篇主要讲述了一些基于MyBatis的数据库使用技巧,有动态sql、sql片段、foreach的使用、查询缓存和逆向工程(利用MyBatis将数据库的表快速生成Java类和映射文件)的使用。到此MyBatis和Java Web的内容已经基本完成,下一篇应该会更新MyBatis和Java Web的小项目。
网盘链接:链接: pan.baidu.com/s/1GmE--aJU… 提取码: 1234