Background
There are some problems with the project that, MapUnderscoreToCamelCase doesn’t work, so I had to rebuild the connection of datasource and set the configuration at the same time~
Configuration of YML
Mybatis-Plus
mybatis-plus:
global-config:
db-config:
id-type: auto
logic-delete-field: isDeleted #逻辑删除字段
logic-delete-value: Y #逻辑已删除值
logic-not-delete-value: N #逻辑未删除值
# table-prefix: tb_ #前缀
banner: false
configuration:
map-underscore-to-camel-case: true #开启驼峰
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印搜索日志
type-aliases-package: com.kiseki.model.entities #就是resulttype好写了,还不要区分大小写
mapper-locations: classpath:/mapper/**/*.xml #mapper.xml映射路径
C3P0
spring:
datasource:
type: com.mchange.v2.c3p0.ComboPooledDataSource
acquireIncrement: 2
autoCommitOnClose: true
checkoutTimeout: 5000
driverClass: com.mysql.cj.jdbc.Driver
initialPoolSize: 10
maxIdleTime: 1200
maxPoolSize: 50
minPoolSize: 10
password: 12345678
jdbcUrl: jdbc:mysql://localhost:3306/project?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
user: root
See below class to match the name as C3P0 seems to have different naming manner.
package com.mchange.v2.c3p0.jboss;
interface C3P0PooledDataSourceMBean
Configuration of Class
DataSourceConfig.Class
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.*;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
@Configuration
@ComponentScan
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
@EnableTransactionManagement
//@MapperScan(basePackages = "com.kiseki.model.persistence", sqlSessionFactoryRef = "db1sqlSessionFactory")
@MapperScan(basePackages = "com.kiseki.model.persistence")
public class DataSourceConfig implements TransactionManagementConfigurer {
@Bean(name = "dataSource")
@Qualifier(value = "dataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
DataSource dataSource = DataSourceBuilder.create().type(com.mchange.v2.c3p0.ComboPooledDataSource.class).build();
return dataSource;
}
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource());
}
}
Mybatis-plus.Class
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Role;
/**
* @Description: Mybatis-plus 拦截器
* @Author: Spike Wong
* @Date: 2022/6/5
*/
@Configuration
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
public class MpConfig {
@Bean
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
public MybatisPlusInterceptor mpInterceptor() {
//1.定义Mp拦截器
MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
//2.添加具体的拦截器
mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
//3.添加乐观所拦截器
mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mpInterceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(MybatisConfiguration configuration) {
configuration.setMapUnderscoreToCamelCase(true);
}
};
}
}