一、mybatis中的连接池以及事物控制
1.连接池:
我们在实际开发中都会使用连接池,因为它可以减少我们获取连接所消耗的时间
2.mybatis中连接池使用及分析
mybatis连接池提供了三种方式的配置
配置的位置
主配置文件SqlMApConfig.xml中的dataSource标签,type属性就是表示采用何种连接池方式。
type属性的取值:
- POOLED
采用传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现。
- UNPOOLED
采用传统的获取连接的方式,虽然也实现了javax.sql.DataSource接口,但是没有使用池的思想。
- JNDI
采用服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到的DataSource是不一样的。
注意:如果不说web或者maven的war工程,是不能使用的。
3.mybatis事物控制的分析
什么是事务
指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。
事物的四大特性ACID
A:原子性(Atomicity)
事务中的操作要么都不做,要么就全做。
C:一致性(Consistency)
事务执行的结果必须是从数据库从一个一致性状态转换到另一个一致性状态。
I:隔离性(Isolation)
一个事务的执行不能被其他事务干扰
D:持久性(Durability)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的
不考虑隔离性会产生的3个问题
1、脏读
2、不可重复读
3、幻读(虚读
解决办法:四种隔离级别(此处可百度)
1、Read Uncommited(读取未提交内容)
2、Read Commited(读取提交内容)
3、Repeatable Read(重复读)
4、Serializable(可串行化)
二、mybatis基于xml配置的动态sql语句使用
mappers配置文件中的几个标签
if
当if标签的test成立时,就把if标签中的内容,拼接到上边的sql语句的后边
where
用于"多条件不确定"查询时,确定在拼接sql语句时,是否把"and"关键字给替换 为"where"
使用where标签时,第一个if标签中的sql语句,可以省略and关键字
foreach
当需要遍历"传入参数",并拼接sql语句时. //特别是类似于 id in (1,2,) 之类的内容
sql
三、mybatis中的多表操作 掌握应用
一对多,多对一
多对多
工程结构图
role对应多个user
IRoleDao.xml文件中resultMap以及sql语句的编写
user对应多个role
IUserDao.xml文件中resultMap以及sql语句的编写
四、总结
随便写写,主要是记录一天中所学的东西,可能只有自己看得懂。不管了,明天继续加油😁!