Mybatis
-
特点
- 半自动化框架
- 轻量级
- 手动编写sql
-
文档
- http://www.mybatis.org/mybatis-3/zh/getting-started.html --文档
- https://ke.qq.com/course/199779?taid=1162699186834531 --视频
-
步骤
- 全局配置文件文件;创建一个SqlSessionFactory对象
- sql映射文件
- 将sql映射文件注册到全局配置文件中
- 编写代码
- 根据全局配置文件得到SqlSessionFactory;
- 通过SqlSesstionFactory获取SqlSesstion对象,使用SqlSesssion对象进行CRUD,一个sqlSession就代表和数据库的一次会话,使用完必须关闭会话。
- 指定sql的唯一标识(id),告诉mybatis执行那一条sql语句。sql语句到放在sql映射文件中的。
- 注:执行sql有两种方式,通过sqlsession的CRUD方法或者通过接口式编程
- 注:sqlsession和connection一样都是非线程安全。每次使用都要获取新的对象。
- 注:接口式编程可以选择绑定xml文件或者编写注解(注解写sql语句)
- mybatis对象的作用域
- 参考文档:入门->作用域
-
配置文件
- 使用dtd文件规范xml文件格式(安装后可以自动提示)
- 配置文件结构
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器):处理java和数据库类型的转换
- objectFatory(对象工厂):mybatis查询结果创建j为ava对象,有对象工厂创建对象
- plugin(插件)
- environments(包括事务和数据源)
- databaseProvider(数据库厂商标识):可以指定sql的对于的厂商,不同厂商sql语法不同
- mapper(映射器):告诉mybatis哪里去找映射文件
-
细节
- 多参数问题
- mybatisSql传多个参数,会把参数封装成一个map,需要按照下标获取参数,或param1…paramN。
- 使用命名参数,可以更具参数名获取参数值
- 使用一个对象POJO
- 使用To
- 使用Map
- 注:更多参数处理查看文档或视频
- 返回结果数据封装问题
- 封装对象,List, Map
- ResultMap封装,多表查询结果的封装
- 延迟加载
- 动态sql
- sql多余and或者or符号的处理
- 批量查询
- 批量插入
- mybatis两个内置参数
- 动态sql中的可插拔脚本语言
- 缓存
- 一级缓存(本地缓存)
- 范围:与数据库同一次会话查到的数据放到本地缓存中。
- 二级缓存
- 范围:基于namespace级别的缓存,一个namespace对应一个二级缓存
- 配置:
- 在全局配置中启用二级缓存
- 在mapper.xml中配置二级缓存
- POJO需要实现序列化接口
- 一级缓存(本地缓存)
- Mybatis-逆向工程(MBG, 代码生成器)
- 做用:更具数据库表生成javabean和=,对应的映射文件和接口
- 多参数问题
-
复习地址
http://www.mybatis.org/mybatis-3/zh/getting-started.html
-
#{}和${}