学习目标:
- 熟练掌握连接池技术
- 理解什么是事务,能够自己分析事务控制
- 能够熟练使用动态SQL语句
学习内容:
一、mybatis的连接池及事务控制
1、MyBatis的连接池使用分析
- 连接池
- 较少获取连接花费的时间,提高效率
- 用集合保存,先进先出,保证唯一性
- MyBatis中的连接池
- 配置
- 配置位置
- 主配置文件SqlMapConfig.xml主配置文件的dataSource标签,
type属性表示采用何种连接池方式 - type属性的取值:
- POOLED:采用传统的javax.sql.DataSource规范中的连接池 MyBatis中有规范的实现
- UNPOOLED:采用传统的获取连接的方式,没有使用池的思想
- JNDI:采用服务器提供的JNDI技术实现来获取DataSource对象,不用服务器能拿到的DataSource不一样
如果不是web或者Maven的war工程不能使用
2、MyBatis的事务控制的分析
- 什么是事务
- 事务的四大特性ACID
- 不考虑隔离性会产生的三大问题
- factory.openSession(true);
在生成sqlSession时传递true参数,会自动提交
二、mybatis基于XML配置的动态SQL语句使用
1、mapper配置文件的几个标签
<select id="findUserByCondition" resultType="com.xuefeng.domain.User">
SELECT * FROM USER WHERE 1 = 1
<if test="username != null">
AND username =
</if>
<if test="sex != null">
AND sex =
</if>
</select>
<select id="findUserByCondition" resultType="com.xuefeng.domain.User">
SELECT * FROM USER
<where>
<if test="username != null">
AND username =
</if>
<if test="sex != null">
AND sex =
</if>
</where>
</select>
<select id="findInIds" parameterType="com.xuefeng.domain.QueryVo" resultType="com.xuefeng.domain.User">
SELECT * FROM USER
<where>
<if test="ids != null">
<foreach collection="ids" open="id in(" close=")" item="id" separator=",">
</foreach>
</if>
</where>
</select>
<sql id="querySql">
SELECT * FROM USER
</sql>
<include refid="querySql"></include>
三、mybatis的多表操作
1、一对多(多对一)
2、一对一
3、多对多
学习产出: