1. 没有selectOne(T t)函数
处理:手动添加函数
public interface MyBaseMapper<T> extends BaseMapper<T> {
default T selectOne(T t){
QueryWrapper<T> query = new QueryWrapper<T>();
Class<?> aClass1 = t.getClass();
Field[] declaredFields = aClass1.getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
Object value = null;
try{
value = field.get(t);
}catch (Exception e){
e.printStackTrace();
throw new BusinessException(ResultCode. DATA_CONVERT_FAIL.code(), "数据转换异常:"+e.getMessage());
}
if (value == null) {
continue;
}
String name = field.getName();
if(Objects.equals("serialVersionUID", name)){
continue;
}
query.eq(toUnderscoreStyle(name), value);
}
return this.selectOne(query);
}
static String toUnderscoreStyle(String camelCaseName) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < camelCaseName.length(); i++) {
char ch = camelCaseName.charAt(i);
if (Character.isUpperCase(ch)) {
if (i > 0) result.append('_');
result.append(Character.toLowerCase(ch));
} else {
result.append(ch);
}
}
return result.toString();
}
}
2. 分页功能失效
处理:手动添加分页拦截器
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = {"xxxx.xxxx.xxx"})
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 向MyBatis-Plus的过滤器链中添加分页拦截器,需要设置数据库类型(主要用于分页方言)
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 添加乐观锁拦截器
//interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
3. 没有批量插入函数
处理:手动注册批量插入函数
public class EasySqlInjector extends DefaultSqlInjector {
@Override
public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
methodList.add(new InsertBatchSomeColumn()); // 添加InsertBatchSomeColumn方法
return methodList;
}
}
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = {"xxx.xxxx"})
public class MybatisPlusConfig {
@Bean
public EasySqlInjector easySqlInjector () {
return new EasySqlInjector();
}
}