MyBatis框架 传参、事务、缓存(二级)
传参
在mapper.xml文件中的标签中的parameterType可以可控制参数
传入参数的方法:
sSession.select("虚拟包.id", 参数列表);
SQL语句中获取参数的三种方式
方式:通过#{ }获取参数、相当于一个占位符
①使用索引,从0开始,也可使用param1表示第一个参数,
例:
<select id="selVipMoney" resultType="int" parameterType="int">
select money from vip where cardid=#{0}
<!--或者:select money from vip where cardid=#{param1}-->
</select>
Tips:如果只有一个参数(基本数据类型或String),对{}内部信息并无要求
②如果参数是对象,#{属性名}
例:
<select id="selhighprice" resultType="Commodity" parameterType="Commodity">
select * from commodity where price>${price}
</select>
③如果参数是map,#{key}
例:
<select id="selpage" resultType="Commodity" parameterType="map">
select * from commodity limit #{index},#{number}
</select>
Ps:此处测试的是分页查询,对于分页查询:
需先计算,后传入,占位符(?)不允许在关键字前后进行数学运算
除此之外,也可通过${}(不常用)获取参数
方式:不使用占位符,是字符串拼接
①对于对象,默认找${属性}的get/set方法
②对于map,通过、${key}获取
③若写一个数字,就表示一个数字
事务管理
在mybatis中默认关闭了JDBC的自动提交功能,即每一个SqlSession默认不自动提交事务。
手动提交事务:.session()
事务回滚:.rollback() 在出现异常时使用
Ps:.setAutoCommit(true)设置为自动提交
缓存
1)、含义
应用程序和数据库交互的过程是一个相对比较耗时的过程
缓存可以使得应用程序减少对数据库的访问,提升程序运行效率
①先去缓存区查询
②无缓存去数据库查询
③返回查询结果,并放入缓存区
2)、mybatis中默认开启SqlSession缓存
同一个SqlSession对象调用同一个对应一个Statement对象,实质是缓存Statement对象
在标签的useCache属性可以设置是否使用二级缓存
增删改标签的flushCache属性默认为true,即每次操作都会刷新缓存
还没有评论,来说两句吧...