1,mybatis的三种开发方式
1>,实体加配置文件
2>,接口加配置文件
3>,注解
2,mybatis的五种传入参数类型
1>,单个参数(mybatis不会做特殊处理)
#{ssk}
2>,传入对象pojo
#{对象的属性名称}
3>,多个参数(mybatis做特殊处理,把传入的参数自动封装为map类型)
Map的key就是param1...paramN...
map.put("param1",);
map.put("param2",);
@Param("name")可以使用这个注解,来定义Map封装数据的key值
4>,直接传入Map
5>,Collection(集合)类型(List,Set),数组。(mybatis做特殊处理)
如果是List或者Set,封装到Map中
map.put("list",你传入的集合)
如果是数组
map.put("array",你传入的数组)
3,动态SQL
完成逻辑判断和动态拼接sql
trim/where/foreach/if/choose/when/otherwise/bind/set
4,多表封装
1>,resultMap
2>,association标签来指定关联的Javabean的封装方式(使用它可以<分步骤查询>,<延迟加载>)
5,mybatis缓存(Cache)
1>,一级缓存SqlSession
默认开启的
有效期:
1,不是同一个SqlSession对象时数据不能互用
2,SqlSession对象调用.clerCache()方法时,会自动清空缓存数据,SqlSession对象还是可以正常使用
3,SqlSession对象关闭的时候,SqlSession对象就不能再使用了
4,当两次相同的查询中,穿插了,增删改操作,也会清除缓存数据
原理和性能:
1,通过简单的Map集合来实现,没对Map的大小容量进行限制
2,粗粒度的缓存,无法精确控制缓存数据是否过长是否过期,以及更新缓存数据
3,多个SqlSession对象换粗数据无法共享
2>,二级缓存namespace(一个xml文件对应一个二级缓存)
二级缓存需要手动配置和开启
1,在总配置文件中设置开启
<setting name="cacheRnabled" vlaue="true"/>
2,需要在映射文件中添加
<cache>标签
3,实体类需要实现序列化接口
implement Serializable
缓存查找顺序:先从二级—— 一级 —— 数据库
3>,开放了Cache接口,整合第三方缓存。