文章目录
MyBatis的配置文件包括两个大的部分, 一是基础配置文件,一个是映射文件。在mybatis中可以使用注解和XML文件来配置。
一、Mybatis配置
1.配置内容
mybatis是一个基于SqlSessionFactory构建的框架,用于生成的SqlSession接口的对象是mybatis操作的核心,构建SqlSessionFactory通过配置类(Configuration)来完成,在mybatis-spring-boot-starter,我们可以在application.properties中进行配置相关内容。
- settings:可以配置映射规则等(如自动映射,驼峰映射,执行器类型,缓存等内容)可参考mybatus官方网站
- typeAliases:使用类全限定名会比较长,可配置自定义的别名
- mappers: 映射器,提供SQL和POJO的映射关系。
- typeHandlers:类型处理器,一般不需要自定义,一般使用集中在枚举类型上,在 MyBatis 写入和读取数据库的过程中对于不同类型的数据进行自定义转换(对于 Java JavaType ,对于数据库则是 JdbcType)
- objectFactory: 在mybatis生成返回的POJO时会调用的工厂类,Mybatis默认为(DefaultObjectFactory),一般不需要配置
- plugins :有时候也称为拦截器,可以修改 MyBatis 底层的实现功能
- environments:数据库环境配置,可以配置数据库连接内容和事务,一般采用Spring进行配置
- databaseldProvider:可配置多类型数据库,不常用
- 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