目录
1、ORM思想
2、 Mybaits框架介绍
3 Mybaits使用步骤
3.1 导入jar包
3.2 编辑核心配置文件(mybatis-config.xml)
3.3 创建接口/xml映射文件
3.4、 入门案例步骤
4 、简化mybatis操作
5 、Mybatis的参数封装
6、 #{ }与 ${ }的用法
7、 mybatis转义字符
8 、Mybatis集合写法
9 、mybatis特殊查询(模糊查询)
10、Mybatis优化
11、动态Sql
12、 resultMap用法
13 、关联关系
13.1、 一对一
13.1、 一对多
14、mybatis缓存
14.1、一级缓存
14.2、二级缓存
1、ORM思想
概括: 利用对象的方式封装数据库
核心规则:
对象与表一一映射.
对象的属性与表中的字段一一映射.
2、 Mybaits框架介绍
小结: Mybatis是一个优秀的持久层框架,基于ORM设计思想,实现了以对象的方式操作数据库.
3 Mybaits使用步骤
3.1 导入jar包
- 课堂使用的是springboot整合mybatis的版本.但是使用其中的依赖包 3.5.7的版本.
- mysql的驱动版本 mysql:mysql-connector-java:8.0.22
- 驱动的配置: com.mysql.cj.jdbc.Driver
- 高版本应该使用高版本数据库
- 课堂使用的是springboot整合mybatis的版本.但是使用其中的依赖包 3.5.7的版本.
- mysql的驱动版本 mysql:mysql-connector-java:8.0.22
- 驱动的配置: com.mysql.cj.jdbc.Driver
- 高版本应该使用高版本数据库
3.2 编辑核心配置文件(applocation.yml)
3.2.1、数据库环境的配置
# 应用服务 WEB 访问端口
server:
port: 8081
#Spring整合数据源 2.mybatis
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: 970824
#SpringBoot整合mybatis
mybatis:
#指定别名包
type-aliases-package: com.jt.pojo
#加载指定的xml映射文件
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
3.2.2、Mapper接口与xml映射文件的绑定关系.
3.3 创建接口/xml映射文件
applocation.yml
3.4、 入门案例步骤
- 指定mybatis-config.xml的路径
- 读取指定的核心配置文件.
- 通过SelSessionFactoryBuilder.buid方法创建SqlSessionFactory.
- 获取SqlSession
- 获取Mapper的接口
- 从mapper接口文件中获取业务数据.
- 调用xml文件的Sql语句实现数据获取.
- mybatis自动封装为对象返回 交给用户处理.
4 、简化mybatis操作
注解: @BeforeEach 在执行@Test注解之前执行.(可以理解为:保证使公共部分先执行)
5 、Mybatis的参数封装
1. 封装为实体对象 user对象
2. 更为常用的方式 Map集合
3. 如果传递的数据有多个,则可以使用注解@Param("sex") String sex 封装为Map.
6、 #{ }与 ${ }的用法
- 使用#{} 获取数据时,默认有预编译的效果.防止sql注入攻击.
- mybatis使用#{}获取数据时,默认为数据添加一对""号.
- 当以字段名称为参数时,一般使用${},但是这样的sql慎用. 可能出现sql注入攻击问题
一般情况尽量使用#{ },因为${ }会有sql注入攻击
7、 mybatis转义字符
xml文件中的转义字符.
> > 大于
< < 小于
& & 号
说明:如果sql中有大量的转义字符 建议使用转义标签体
语法:
8 、Mybatis集合写法
- array(数组)
- list
- map
|
|
9 、mybatis特殊查询(模糊查询)
模糊查询: “%” #{属性}"%" 或者 xxxx.setName("%精%")
10、Mybatis优化
1.指定具体的类型的别名
2.别名包
3.别名注解 一般不常用
4.Sql标签 将通用的Sql进行抽取. 通过ID进行引用
5.mybatis的驼峰映射规则 可以自动将下划线去除,映射到属性中.
11、动态Sql
- if-where where去除多余的and / or
- set标签 去除多余的,号
- choose when otherwise 用法上和java中的switch类型.
12、 resultMap用法
当结果集(相当于数据库的字段名)中的字段与属性名不一致时使用. 可以使用驼峰映射规则优化.
13 、关联关系
13.1、 一对一
逻辑: 一个员工对应一个部门
表示: 在对象中封装其他对象, 一对一 :封装单个对象 ,一对多:封装List集合
一对一映射标签:
13.1、 一对多
14、mybatis缓存
14.1、一级缓存
sqlSession级别的。默认开启SqlSession内共享数据,同一个sqlSession有效
14.2、二级缓存
SqlSessionFactory级别的。mybatis中默认也是开启的,但是需要手动标识一下,在同一个SqlSessionFactory内部有效,sqlSession查询数据之后,会将缓存信息保存到一级缓存中,但是不会立即将缓存交给二级缓存保管,如果需要使用二级缓存,则必须将sqlSession义务逻辑执行成功,并且关闭之后,才执行。(需要在接口实现文件里面添加如下标签)
完..........



