Mybatis(三)——一对一映射、动态 SQL(include、if、where、set、trim、foreach、choose标签)、Cache(一级缓存和二级缓存)、SSM整合

Mybatis(三)——一对一映射、动态 SQL(include、if、where、set、trim、foreach、choose标签)、Cache(一级缓存和二级缓存)、SSM整合,第1张

Mybatis(三)——一对一映射、动态 SQL(include、if、where、set、trim、foreach、choose标签)、Cache(一级缓存和二级缓存)、SSM整合 Mybatis(三)——一对一映射、动态 SQL(include、if、where、set、trim、foreach、choose标签)、Cache(一级缓存和二级缓存)、SSM整合 一、一对一映射 1、一对一映射

比如每个班级都对应一个年级:

实体类:

然后是 mapper 文件:

然后测试结果:

2、一对一映射(懒加载)

二、动态 SQL 1、介绍动态 SQL

MyBatis的映射文件中支持在基础SQL上添加一些逻辑 *** 作,并动态拼接成完整的SQL之后再执行,以达到SQL复用、简化编程的效果。

sql 优化的一个策略是:取什么数据就用什么字段,不要轻易的 select * ,这样会消耗数据库的性能。

databaseID :如果不确定用什么数据库,比如可能是 sql,或者 oracle,那就可以使用这个,不过一般都用不上。

2、include 标签

可以单独定义一个 sql 片段,然后需要用到这个片段的时候就通过 include 来引用这个片段:

3、if 标签

学代码学到这里的不会还不知道 if 代表的是什么意思吧?

接口:

mapper 文件:

还有一种简化的笨办法:

4、where 标签

上图中的办法也不是很好,因为要写多一个判断,所以可以通过 where 标签来完成:

5、set 标签

set 标签是做更新的时候用的。

核心是,用户传了哪些字段,就更新哪些字段,不可能用户只想更新某一个字段,就传了某一个字段,而其他字段都为 null ,这显然不合理。所以有了 set 标签:

6、trim 标签

trim 标签是功能的集大成者,有很多前面标签的功能。


trim 的用法不止上面这些,还有很多。比如有前面或者后面有多余的,不确定要不要加的标签都可以用 trim 标签。

7、foreach 标签

比如传进一组 id,根据这些 id,一个个的查出他们的数据:

接口:

mapper 文件:

测试代码:

另外一个用法,可以用在批量插入中:

8、choose 标签

choose 标签相当于 java 代码中的 switch 的用法:

choose 标签用的很少,if 标签用的更多。

三、Cache(缓存) 1、缓存介绍

2、一级缓存 a、相同 sqlsession

可以通过查看日志 sql 语句执行了几次验证:


可以发现,只执行了一次 sql 语句,所以一级缓存是默认开启的

b、不同 sqlsession

如果 sqlsession 不同的话,是用不了缓存的

可以通过查看日志发现,sql 语句执行了两次。

一级缓存使用的前提是:同一个 sqlsession,

3、二级缓存

一般来说 sqlSessionFactory 只有一个实例,不会变。

二级缓存有点类似于全局缓存。使用到这个的概率很低。

全局缓存开启:

上图中这个东西一般默认开启;要手动开启的在下图(开启也很容易,在 mapper 文件中):

开启了之后,用到的实体类都需要序列化!

总例子:

要缓存也可以通过 commit():

四、SSM整合

Spring + Spring MVC + mybatis 整合。

一步一步来,先配置 Spring + MVC,没问题了再配置 mybatis 。

1、先配 Spring + MVC

pom.xml 文件:

然后是 java 代码文件:


然后是 Spring 配置文件:

Spring MVC 配置文件:

然后是 web.xml 配置文件:

到此为止,一个简单的 Spring + MVC 就算整合完毕,测试也没有问题。

2、配置 mybatis

首先导入依赖:

然后是资源路径:

接着就数据库了:

然后是 mapper 和 model:

最后就是在 Spring 里面整合 mybatis:

然后到此为止,mybatis 在这里面配置这两个,就算完成了。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存