[SSM网上书店基础与实战]-07MyBatis进阶

167 阅读2分钟

一、动态sql

MyBatis中sql语句是核心,使用mapper代理,只有接口,没有实现类,所以sql的写法比较重要。

案例

需求

综合条件查询用户数量,对查询条件进行判断,输入参数不为空,才进行查询条件的拼接。

接口

image.png

映射

image.png

测试

性别为1,且名字中有“明”字的人数

image.png

性别为1的人数

image.png

二、sql片段

同一段sql代码,会用于多个地方,如果重复编写,代码冗余。

案例

需求

综合条件查询用户信息,对查询条件进行判断,输入参数不为空,才进行查询条件的拼接。

接口

image.png

映射

image.png

测试

image.png

三、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

image.png

并自动生成gettersetter方法

接口

image.png

映射

image.png

或者 image.png

测试

image.png

四、查询缓存

查询缓存是企业级卡法中必用技术。 什么是缓存?

    提高速度用的技术

MyBatis中有两种缓存

    一级缓存

    二级缓存

一级缓存

session级缓存,自动,无需配置

在一个session操作中,数据已经有的,MyBatis会自动去session中查找,就不去数据库中找了

测试

image.png

二级缓存

跨session的缓存,即在session之间也能起作用,需要配置 SqlMapConfig.xml

image.png 添加缓存配置文件ehcache.xml

image.png

需要缓存对象的mapper映射配置

image.png

对象需要设定能被缓存

image.png

测试

image.png

五、逆向工程

MyBatis官方提供了从单表数据表生成:po对象,mapper接口,mapper映射文件

image.png

新建Module(或者Project),同时添加jar包库。项目结构

image.png

配置文件

image.png

运行生成类

image.png

生成结果

image.png

写在最后

本篇主要讲述了一些基于MyBatis的数据库使用技巧,有动态sql、sql片段、foreach的使用、查询缓存和逆向工程(利用MyBatis将数据库的表快速生成Java类和映射文件)的使用。到此MyBatis和Java Web的内容已经基本完成,下一篇应该会更新MyBatis和Java Web的小项目。

网盘链接:链接: pan.baidu.com/s/1GmE--aJU… 提取码: 1234