快速引入框架
- 建立maven项目
- 导入mybatis坐标,下载mybatis框架
:::info
如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:
org.mybatis mybatis
x.x.x
:::
- 配置mybatis核心xml文件,
- 修改配置信息,获取数据库连接实例的数据源(DataSource)
- 配置mapper映射文件
:::info
XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。后面会再探讨 XML 配置文件的详细内容.
:::
- 引入日志系统依赖以及相关配置文件(slf4j日志工具,logback配置文件)
- 建立sql语句映射xml文件, 减少硬jdbc编码
- 编写sql语句,命名空间,id标识
- 编写POJO类(Javabeen类)
- 从xml中构建 SqlSessionFactory,获得sql连接对象…
- 修改相关java代码,配置完成
详情见mybatis官方入门文档 https://mybatis.net.cn/getting-started.html
Mapper代理开发
- 创建SQL映射文件同名的Mapper接口, 接口内定义 SQL语句的id
其目的是: 通过调用接口内的方法, 就不需要查看sql标识的name+id 对sql语句进行操作, 减少硬编码过程
- 将mapper映射文件的namespace改为Mapper接口全限定名, 目的:使接口与SQL映射文件挂钩,
- 把Mapper接口放入与SQL文件同一个目录下, maven工程里有放置技巧, 不需要Mapper文件和配置文件真正放一起, 开发中不方便管理, 而是选择在配置文件目录下, 新建一个与 Mapper接口文件名相同的包名, 将映射文件放入.
- 此时SQL文件路径改变, 映射文件的限定名称变化, 到mybatis的配置文件中修改更换 SQL映射文件的新路径
mybatis核心配置
常见配置文件名: mybatis-config.xml
- xml文件配置信息严格遵从相对顺序
- environment 环境可以设置不同的数据源, 也可以对默认数据源进行设置,
- 不同数据源例如, 开发, 测试, 生产, 都需要不同的数据源
- 事务管理和数据源, 一般不由mybatis接管, 日后生产可以由spring接管,现在可以由jdbc管理
```
```
3. 别名, 可以给相关的类的起别名, 简化绝对路径
`` (这个别名可以选作为sql语句映射的resultType)
![image.png](https://cdn.nlark.com/yuque/0/2023/png/1238904/1677053790167-807e4bd8-07d2-4200-9893-7d957de2e61f.png#averageHue=%23fbfafa&clientId=ueef2c928-bcfb-4&from=paste&height=411&id=uf92faa8b&name=image.png&originHeight=616&originWidth=945&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=48501&status=done&style=none&taskId=u37051e21-5122-4e82-bda8-0d5e95b68ff&title=&width=630)
# SQL增删改查的设计
## 查询
- 全部查询
- 查询某一条
- 模糊查询
- 多条件查询
- 单条件查询
1. 全部查询
> 数据库列名与类属性名不同, 导致查询出数据无法封装到对应类中
>
2. 查询某条
> 根据某些信息查询精确查询某条数据,获得详细数据,sql语句中占位符的使用问题
>
3. 模糊查询
> 1. SQL语句设计问题
> 2. 用户输入参数需要继续处理
> 3. 参数设置问题
![image.png](https://cdn.nlark.com/yuque/0/2023/png/1238904/1677077399757-d3e4396b-aad2-4e20-8306-08cbf00a2796.png#averageHue=%23f2f1f1&clientId=ueef2c928-bcfb-4&from=paste&height=231&id=u14e220e6&name=image.png&originHeight=346&originWidth=931&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=119323&status=done&style=none&taskId=u7e97273a-d159-4d39-865d-6c2032491c5&title=&width=620.6666666666666)
### 主键返回
在 insert 标签上添加如下属性:
useGeneratedKeys:是够获取自动增长的主键值。true表示获取
keyProperty :指定将获取到的主键值封装到哪儿个属性里
### 动态SQL
1. 多条件查询
2. 单条件查询
![image.png](https://cdn.nlark.com/yuque/0/2023/png/1238904/1677080267086-e1f8679d-7f51-4c58-adfc-e6c2f685794a.png#averageHue=%23f9f7ee&clientId=ueef2c928-bcfb-4&from=paste&height=515&id=uc34dd3df&name=image.png&originHeight=773&originWidth=1535&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=428585&status=done&style=none&taskId=u61c0e917-5b31-4872-ae0e-1922c581063&title=&width=1023.3333333333334)
针对上述的需要,Mybatis对动态SQL有很强大的支撑:
> if
> choose (when, otherwise)
> trim (where, set)
> foreach
# 参数接收
## ParamNameResovle类
Mybatis 接口方法中可以接收各种各样的参数,如下:
- 多个参数
- 单个参数:单个参数又可以是如下类型
- POJO 类型
- Map 集合类型
- Collection 集合类型
- List 集合类型
- Array 类型
- 其他类型
**1.10.1 多个参数 **
Mybatis 接口方法中可以接收各种各样的参数,如下:
- 多个参数
- 单个参数:单个参数又可以是如下类型
- POJO 类型
- Map 集合类型
- Collection 集合类型
- List 集合类型
- Array 类型
其他类型
---
我们在接口方法中定义多个参数,Mybatis 会将这些参数封装成 Map 集合对象,值就是参数值,而键在没有使用 @Param
注解时有以下命名规则:
1. 以 arg 开头 :第一个参数就叫 arg0,第二个参数就叫 arg1,以此类推。
2. 以 param 开头 : 第一个参数就叫 param1,第二个参数就叫 param2,依次类推。如: