1.mybatis的介绍
mybatis是一个半自动化的优秀框架,面向接口编程。
对于操作sql的增删查改交给代理对象去完成。
不同于hibernate框架的全自动化黑箱操作需要花大量的时间精力学好HQL的使用。
mybatis将最重要的部分SQL语句的编写和优化交给开发人员来做。
2.关于mybatis的原理:
传入SqlSession对象和type参数,通过StatementID获取MappedStatement对象,Executor解析该对象后JDBC执行SQL
type:找到对应类的类型才能与之的sql语句关联 与xml文件进行绑定
SqlSession:用来执行sql语句
于是mapper.对应方法名()执行sql语句。
3.mybatis的使用
对于多个参数取值mybatis会封装成map(0,1)(param1,param2)。#{key} 底层遍历key拿到value封装成map
使用@Param(“id”)指定命名 #{id}
或者传pojo
或者传map(key,value) #{key}
若参数经常要使用可自定义pojo(Transfer Object)数据传输对象
#{} 使用预编译形式设置到sql语句中,防止sql注入
${} 直接值 用于非参数(分表时拿表名)
注意练习
.自定义规则级联表查询
.使用association(property,javaType),collection(ofType)标签进行分步查询
.延迟加载配置 lazyLoadingEnabled,agreessiveLazyLoading
.动态sql trim|where|set|foreach|if|choose|when|otherwise|bind 批量保存
4.mybatis的缓存 flushCache=true(清空一二)
一级缓存 对应不同的sqlSession。同一次会话时查询的数据存入到本地
二级缓存 对应不同的nameSpace。sqlSession会话关闭或提交后,mybatis会将数据存入二级缓存
readOnly=true 直接去二级缓存中读到数据,不安全但是速度快
默认非只读 readOnly=false mybatis认为数据可能会被修改,通过序列化/反序列化克隆一份数据给你
顺序 先二再一再数据库
自定义缓存:ehcache(hibernate中的缓存机制轻量高效),redis
5.mybatis整合spring-ssm
spring框架 ioc容器用来组装不同的资源及相互依赖使用。提供高效率的注解开发环境
springmvc spring的一个模块(web模块)