? 总结 mybatis,需要掌握的基础如下:
1、了解ORM 思想、ORM思想的作用、映射配置的两种方式
2、MyBatis开发流程(基本使用)
3、日志框架
4、了解mybatis生命周期并抽取工具类MyBatisUtil、 MyBatisUtil工具类的作用
5、MyBatis基础拓展(别名、属性、?结果集映射、?Mapper?接口、?多参数处理、myBatis插件)
6、注解开发
7、动态SQL
8、对象关联的查询【额外的SQL、 内联映射】和懒加载
9、缓存机制(一级缓存、二级缓存、第三方缓存技术redis、ehcache)
10、代码生成器MyBatis Generator (MBG)、MBG的作用
11、MyBatis 分页插件-PageHelper
?关于mybatis,需要掌握的基础的详情如下:
1、了解ORM 思想 ?(Object Relational Mapping) ??对象映射关系
----为了解决面向对象与关系数据库存在的互相不匹配的问题。 [主要是:?对象的属性名和表的列名不匹配的问题?]
■ ORM思想:
面向对象概念----(映射配置)-----面向关系概念
类 ---------------------------------表
对象------------------------------表的行(记录)
属性------------------------------表的列(字段)
?映射配置Mapping:使用注解/xml
2、MyBatis基本使用:
-----开发流程-拷贝jar包,编写配置文件,然后进行测试
? MyBatis全局配置文件内容:
① 属性配置信息
② 全局配置信息(日志信息、)
③ 类型别名
④ 插件配置信息
⑤?配置环境信息?【?事务+连接池?】
⑥?关联映射文件
? MyBatis 映射文件内容:
①?编写增删改查sql?,把sql存放到insert| update| delete| select 元素中去
②?结果集映射?:解决表中的列和对象属性不匹配问题
③ 缓存配置
■ 测试myBatis执行增删改查操作:
① 加载配置文件
②?创建会话工厂对象?SqlSessionFactory?【好比连接池DataSource】
③?建会话对象?SqlSession?【好比连接对象Connection】
④ 执行crud操作
⑤ 关闭资源
3、日志框架使用:
-----开发流程-拷贝jar包,编写日志配置文件,然后在mybatis的全局配置中设置日志信息
4、了解myBatis的生命周期并抽取工具类MyBatisUtil
-----抽取MyBatisUtil工具类[作用:?是用来创建会话对象Sqlsession]
■ 通过factory.openSession() 创建会话对象,默认是不提交事务的方式,可以手动提交
5、MyBatis基础拓展(别名、属性、?结果集映射、?Mapper?接口、?多参数处理、myBatis插件)
■ 别名:在全局配置文件中,配置自定义别名
■ 属性:properties 属性配置 [动态引入]
■?结果集映射:[?解决表的列名和对象的属性名不匹配的问题 ]
■?Mapper 接口:相当DAO 层
■?多参数处理:使用注解@Param实现处理多个参数
---myBatis默认情况下只能处理一个参数,解决查询多个参数的方法
■ myBatis插件:作用是编写配置文件有代码提示作用
6、注解开发
7、动态SQL
if
choose (when, otherwise)
trim (where, set)
foreach
其他(bind,sql,include)
8、对象关联的查询【额外的SQL、 内联映射】和懒加载(在全局配置进行设置)
■ 总结:多对一、一对多关系的单属性对象/集合属性对象,使用association或collection元素?使用额外SQL或内联查询?
● 单属性对象(?assoication元素),多表查询操作会选择?内联查询
● 集合属性对象(?collection元素),懒加载会选择?额外SQL处理
?额外的SQL:会导致N+1 问题
□额外的SQL[分步查询],一般需要进入另外一个页面展示更加详细的信息(懒加载)。
□内联映射[多表查询],需要在列表中显示关联对象的数据,使用内联映射,否则会出现N+1问题。
9、缓存机制(一级缓存、二级缓存、第三方缓存技术redis、ehcache)
10、代码生成器MyBatis Generator (MBG)
-----MBG [作用:可以根据表生成对应的?模型对象、?Mapper?接口、?Mapper?文件,甚至生成?QBC?风格?查询对象。]
11、MyBatis 分页插件-PageHelper