【总结】:
一、
(1) mybatis是什么
- 持久层框架
- mybatis重点是sql语句
- 适用于需求变化频繁的项目
(2) mybatis架构
- xml全局配置文件(名称任意),主要配置:
typeAliases、properties、环境变量(数据源、事务)、setting、mapper - SqlSessionFactory:会话工厂
- SqlSession:会话,是面向用户的接口,是线程非安全的,适用于方法体内
(3) mybatis开发dao
- 原始dao开发方式:有程序员定义接口、实现接口
- mapper代理方式:程序员只需要定义接口,开发遵循规则:
1.mapper.xml文件中的 namespace是接口的全名
2.接口中方法名与 statement的 id一致
3.statement中定义的 parameterType与接口方法的输入参数类型一致
4.statement中定义的 resultType与接口方法的返回类型一致 - resultType和 resultMap
(4) 动态SQL
- where if
- sql片段(sql if、foreach)
- #{ } 占位符
- ${ } 字符串拼接
1.如果使用 #{ } 占位符则必须人为在传入的参数中加 % ;
eg:List< User> list=userMapper.selectUserByName(“%丽”);
2.如果使用 ${ } 则不需要人为在传入的参数中加 % ;
eg:List< User> list=userMapper.selectUserByName(“丽”);
3.order by 排序,用 ${ } 。如:列名通过参数传入 sql,根据传的列名进行排序,用 ${ } ,如果用 #{ } 则无法实现。写为:
eg:order by ${columnName}
二、
(1) 如何使用 resultMap完成高级映射
(网址: https://blog.csdn.net/qq_41029923/article/details/83748339 )
- 一对一
- 一对多
- 多对多
- 延迟加载
(2) 缓存
(网址: https://blog.csdn.net/qq_41029923/article/details/83796575 )
- 一级缓存
- 二级缓存