Spring boot 整合MyBatis框架

本文详细介绍了如何在Spring Boot中整合MyBatis框架,包括MyBatis的基础配置、在application.yml中的设置、接口与映射文件的定义。接着讨论了Spring Boot整合MyBatis的各种方法,如使用@MapperScan注解,以及resultMap的解析,特别是collection标签的嵌套查询。还深入讲解了参数传递的不同方式,包括基本和复杂数据类型的处理,以及返回自增长主键的两种方法。最后提到了分页插件PageHelper的集成和使用。
摘要由CSDN通过智能技术生成

MyBatis的配置文件包括两个大的部分, 一是基础配置文件,一个是映射文件。在mybatis中可以使用注解和XML文件来配置。

一、Mybatis配置

1.配置内容

mybatis是一个基于SqlSessionFactory构建的框架,用于生成的SqlSession接口的对象是mybatis操作的核心,构建SqlSessionFactory通过配置类(Configuration)来完成,在mybatis-spring-boot-starter,我们可以在application.properties中进行配置相关内容。

在这里插入图片描述

  1. settings:可以配置映射规则等(如自动映射,驼峰映射,执行器类型,缓存等内容)可参考mybatus官方网站
  2. typeAliases:使用类全限定名会比较长,可配置自定义的别名
  3. mappers: 映射器,提供SQL和POJO的映射关系。
  4. typeHandlers:类型处理器,一般不需要自定义,一般使用集中在枚举类型上,在 MyBatis 写入和读取数据库的过程中对于不同类型的数据进行自定义转换(对于 Java JavaType ,对于数据库则是 JdbcType)
  5. objectFactory: 在mybatis生成返回的POJO时会调用的工厂类,Mybatis默认为(DefaultObjectFactory),一般不需要配置
  6. plugins :有时候也称为拦截器,可以修改 MyBatis 底层的实现功能
  7. environments:数据库环境配置,可以配置数据库连接内容和事务,一般采用Spring进行配置
  8. databaseldProvider:可配置多类型数据库,不常用
  9. properties:属性文件在实际用用中一般采用Spring进行配置,如数据库源的配置
@Alias(value = "user") 
public class User {
   
....
// 性别枚举,这里需要使用typeHandler进行转换(如下)
private SexEnum sex;
}

//使用typeHandler进行转换
@MappedJdbcTypes(JdbcType.INTEGER)   // 声明JdbcType为整形
@MappedTypes(value = SexEnum.class)  // 声明JavaType为SexEnum
public class SexTypeHandler extends BaseTypeHandler<SexEnum> {
   

    // 通过列名读取性别
    @Override
    public SexEnum getNullableResult(ResultSet rs, String col) throws SQLException {
   
        int sex = rs.getInt(col);
        if (sex != 1 && sex != 2){
   
            return null;
        }
        return SexEnum.getEnumById(sex);
    }

    // 通过下标读取性别
    @Override
    public SexEnum getNullableResult(ResultSet rs, int idx) throws SQLException {
   
        int sex = rs.getInt(idx);
        if (sex != 1 && sex != 2){
   
            return null;
        }
        return SexEnum.getEnumById(sex);
    }

    // 通过存储过程读取性别
    @Override
    public SexEnum getNullableResult(CallableStatement cs, int idx) throws SQLException {
   
        int sex = cs.getInt(idx);
        if (sex != 1 && sex != 2){
   
            return null;
        }
        return SexEnum.getEnumById(sex);
    }

    // 设置非空性别参数
    @Override
    public void setNonNullParameter(PreparedStatement ps, int idx, SexEnum sex, JdbcType jdbcType) throws SQLException {
   
        ps.setInt(idx, sex.getId());
    }
}

2. 配置application.yml

spring:
  # 配置Mysql数据源
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://10.107.171.101:3306/ssm?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123456

    # 指定druid数据库连接池
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      min-idle: 10      # 最小连接池数量
      max-active
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值