Java-MyBatis连接池、事务控制及动态SQL语句-第47节

学习目标:

  • 熟练掌握连接池技术
  • 理解什么是事务,能够自己分析事务控制
  • 能够熟练使用动态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配置文件的几个标签
  • <if>:判断条件
	<select id="findUserByCondition" resultType="com.xuefeng.domain.User">
		SELECT * FROM USER WHERE 1 = 1
		<if test="username != null">
			AND username = #{username}
		</if>
		<if test="sex != null">
			AND sex = #{sex}
		</if>
	</select>
  • <where>:添加条件
	<select id="findUserByCondition" resultType="com.xuefeng.domain.User">
		SELECT * FROM USER
		<where>
			<if test="username != null">
				AND username = #{username}
			</if>
			<if test="sex != null">
				AND sex = #{sex}
			</if>
		</where>
	</select>
  • <foreach>:遍历列表
	<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=",">
					#{id}
				</foreach>
			</if>
		</where>
	</select>
  • <sql>:抽取SQL语句
	<sql id="querySql">
		SELECT * FROM USER
	</sql>
	<include refid="querySql"></include>
三、mybatis的多表操作
1、一对多(多对一)
2、一对一
3、多对多

学习产出:

项目文件:请点击获取压缩包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值