Mybatis学习笔记(四)

连接池

相当于一个容器,里面装有连接。使用时会从容器里面取连接,取出一个使用一个。可以减少我们使用连接时所消耗的时间。
容器就是一个集合对象,该集合必须是线程安全的,不能同时有两个线程拿到同一个连接。
该集合还必须实现队列的特性,即先进先出。
在Mybatis的连接池当中,共有三种方式可以进行配置。配置的位置位于主配置文件SqlMapConfig.xml文件当中的dataSource标签当中。在该标签里,type属性就用于表示采用何种连接池配置方式。
type属性的取值如下:
1、POOLED :采用传统的javax.sql.DataSource规范中的连接池。mybatis中有针对规范的实现。
2、UNPOOLED :采用传统的获取连接的方式,虽然也实现了javax.sql.DataSource接口,但是没有实现池的思想。每次用都重新获取一个连接。
3、JNDI:采用服务器提供的JNDI技术实现来获取DataSource对象。不同服务器所能取到的DataSource是不一样的。同时注意,如果不是web或者maven的war工程,是不能使用的。例如,tomcat服务器就是采用dbcp连接池的。
配置示例:
在主配置文件SqlMapConfig.xml当中进行。
Mybatis学习笔记(四)_第1张图片

事务

什么是事务
事务的四大特性ACID
不考虑隔离性会产生的四个问题
解决办法:四种隔离级别
在Mybatis中,通过sqlsession对象的commit方法和rollback方法实现事务的提交和回滚。

动态sql

当遇到一些比较复杂的查询操作时,使用动态sql会大大提高开发的效率。标准的查询设置如下所示:
Mybatis学习笔记(四)_第2张图片
在标准的查询设置的基础上,添加动态sql的配置。

一、if标签

在dao接口当中新增如下方法:
Mybatis学习笔记(四)_第3张图片
在主配置文件中进行配置,test里面写判断的条件。标签内部写条件成立时做的事情。
Mybatis学习笔记(四)_第4张图片
编写测试方法进行测试:
Mybatis学习笔记(四)_第5张图片
二、where标签
映射文件中的where标签可以过滤掉条件语句中的第一个and或or关键字。where无法去除掉后面的and关键字。配置方法如下图所示。此时,Mybatis会自动根据传入的参数来添加and标志。Mybatis学习笔记(四)_第6张图片
进行测试。使用where后就可以避免在所有的查询语句后面都加上永远为真的条件,使得sql语句看上去更为清晰简洁。
Mybatis学习笔记(四)_第7张图片
三、foreach标签

在实际开发中实现如下图所示的传参。Mybatis学习笔记(四)_第8张图片
开发步骤
1、创建一个名为QueryVo的类,在类中添加元素:
在这里插入图片描述
2、在dao接口中添加以下方法:
Mybatis学习笔记(四)_第9张图片
3、在主配置文件中添加配置:
Mybatis学习笔记(四)_第10张图片
foreach标签用于遍历集合。它的各个属性如下:collections表示一个集合,open表示语句的开始部分,close表示语句的结束部分。item表示遍历集合的每个元素,生成的变量名。sperator表示分隔符。
上图中foreach标签内的语句表示对集合ids进行遍历,将遍历出的每一项uid填充到open和close的中间,用逗号分割遍历出的每一项。
4、对foreach标签的使用进行测试。
Mybatis学习笔记(四)_第11张图片

Mybatis中的多表查询

表和表之间的关系有很多种:
一对多 用户和订单
多对一 订单和用户
一对一 用户和身份证号
多对多 老师和学生
如果拿出来一个订单,它只能属于一个用户。所以Mybatis就把多对一视为一对一。
多表查询的一个典型例子就是用户和账户。一个用户可以拥有多个账户,一个账户只能属于一个用户。
一对多实现步骤
1、建立两张表:用户表和账户表。使用外键在账户表当中添加关系使得用户表和账户表具有一对多的关系。
2、建立两个实体类,让账户和用户的实体类体现出来一对多的关系。
Mybatis学习笔记(四)_第12张图片
3、在主配置文件当中定义封装account和user的resultMap,同时在标签内部定义一对一的关系映射,配置封装user的内容。association标签中还有一个名为javaType的属性,用于提示封装到哪个对象当中。当配置一对多的关系映射时,有一个名为ofType的属性,用于提示封装到的集合中元素的类型。
Mybatis学习笔记(四)_第13张图片
多对多实现步骤
实例:用户和角色。一个用户可以拥有多个角色,而一个角色可以被多个用户占有。
1、建立两张表:用户表和角色表。在数据库中让用户表和角色表具有多对多的关系,需要使用中间表,中间表中包含各自的主键,在中间表中是外键。
2、建立两个实体类,分别表示用户和角色,并且使得它们能够体现出来多对多的关系。各自包含对方一个集合引用。以查询各个角色下的用户为例:
Mybatis学习笔记(四)_第14张图片

新建一个dao接口,添加以下方法:
Mybatis学习笔记(四)_第15张图片
3、分别建立两个配置文件:用户配置文件和角色配置文件。以角色配置文件为例进行如下配置:
Mybatis学习笔记(四)_第16张图片
编写sql语句时,换行时要加空格。

4、实现配置。当我们查询用户时,可以同时得到用户所包含的角色信息。当我们查询角色时,可以同时得到角色所赋予的用户信息。进行测试,如下图所示:
Mybatis学习笔记(四)_第17张图片

你可能感兴趣的:(Mybatis学习笔记(四))