Mybatis

Posted by lily on April 7, 2023

快速引入框架

  1. 建立maven项目
  2. 导入mybatis坐标,下载mybatis框架 :::info 如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:
org.mybatis mybatis x.x.x

:::

  1. 配置mybatis核心xml文件,
    1. 修改配置信息,获取数据库连接实例的数据源(DataSource)
    2. 配置mapper映射文件 :::info XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。后面会再探讨 XML 配置文件的详细内容. :::
  2. 引入日志系统依赖以及相关配置文件(slf4j日志工具,logback配置文件)
  3. 建立sql语句映射xml文件, 减少硬jdbc编码
    1. 编写sql语句,命名空间,id标识
  4. 编写POJO类(Javabeen类)
  5. 从xml中构建 SqlSessionFactory,获得sql连接对象…
  6. 修改相关java代码,配置完成

    详情见mybatis官方入门文档 https://mybatis.net.cn/getting-started.html

Mapper代理开发

  1. 创建SQL映射文件同名的Mapper接口, 接口内定义 SQL语句的id

    其目的是: 通过调用接口内的方法, 就不需要查看sql标识的name+id 对sql语句进行操作, 减少硬编码过程

  2. 将mapper映射文件的namespace改为Mapper接口全限定名, 目的:使接口与SQL映射文件挂钩,
  3. 把Mapper接口放入与SQL文件同一个目录下, maven工程里有放置技巧, 不需要Mapper文件和配置文件真正放一起, 开发中不方便管理, 而是选择在配置文件目录下, 新建一个与 Mapper接口文件名相同的包名, 将映射文件放入.
  4. 此时SQL文件路径改变, 映射文件的限定名称变化, 到mybatis的配置文件中修改更换 SQL映射文件的新路径

image.png

mybatis核心配置

常见配置文件名: mybatis-config.xml

  1. xml文件配置信息严格遵从相对顺序
  2. environment 环境可以设置不同的数据源, 也可以对默认数据源进行设置,
    1. 不同数据源例如, 开发, 测试, 生产, 都需要不同的数据源
    2. 事务管理和数据源, 一般不由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,依次类推。如: