#{}和${}的区别是什么?
1)#{}是预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 23: …换。 2)Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值。
4)使用#{}可以有效的防止SQL注入,提高系统安全性。
resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。
resultMap
parameterType 一样,如果注册过类型别名的,可以直接使用别名
用户 id 的返回值
select last_insert_id();
动态sql,抽出重复sql
SQL 语句: select 字段 from user where id in (?)
标签用于遍历集合,它的属性: collection:代表要遍历的集合元素,注意编写时不要写#{} open:代表语句的开始部分 close:代表结束部分
在 SqlMapConfig.xml 中配置:
注册指定包下的所有 mapper 接口 如: 注意:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中
一级缓存:它指的是Mybatis中SqlSession对象的缓存。
sqlSession.close(); sqlSession.clearCache();//此方法也可以清空缓存,更新删除修改,也可
二级缓存:
它指的是Mybatis中SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。
二级缓存的使用步骤:
第一步:让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)
1.
第二步:让当前的映射文件支持二级缓存(在IUserDao.xml中配置)
2.
第三步:让当前的操作支持二级缓存(在select标签中配置)
useCache="true"
@Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @ResultMap:实现引用@Results 定义的封装 @One:实现一对一结果集封装 @Many:实现一对多结果集封装 @SelectProvider: 实现动态 SQL 映射 @CacheNamespace:实现注解二级缓存的使用
mybatis 基于注解的二级缓存
@CacheNamespace(blocking=true)//mybatis 基于注解方式实现配置二级缓存