mybatis plus自动生成代码tinyint(1)自动转换为Boolean的问题及解决

 更新时间:2023年08月29日 09:18:39   作者:hank009  
这篇文章主要介绍了mybatis plus自动生成代码tinyint(1)自动转换为Boolean的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mybatis plus自动生成代码tinyint(1)自动转换为Boolean

说明下为什么会自动转换为Boolean,是因为mybtisplus提供的默认的mysql类型转换器MySqlTypeConvert上特别写了这一段:

对症下药的解决办法是重写一个

在注入到配置里:

/**
 * 自定义类型转换
 */
class MySqlTypeConvertCustom extends MySqlTypeConvert implements ITypeConvert{
    @Override
    public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
        String t = fieldType.toLowerCase();
        if (t.contains("tinyint(1)")) {
            return DbColumnType.INTEGER;
        }
        return super.processTypeConvert(globalConfig, fieldType);
    }
}

代码生成器完整代码

package com.wjj.application;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.Arrays;
/**
 * @author hank
 */
public class TestGen {
    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir("D://");
        gc.setFileOverride(true);
        //不需要ActiveRecord特性的请改为false
        gc.setActiveRecord(true);
        // XML 二级缓存;
        gc.setEnableCache(false);
        // XML ResultMap
        gc.setBaseResultMap(true);
        // XML columnList
        gc.setBaseColumnList(true);
        gc.setAuthor("mybatisPlus");
        gc.setDateType(DateType.ONLY_DATE);
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setControllerName("%sController");
        mpg.setGlobalConfig(gc);
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUrl("jdbc:mysql://xxxx/xxxxxx?tinyInt1isBit=false&useUnicode=true&characterEncoding=UTF-8&generateSimpleParameterMetadata=true");
        dsc.setUsername("xxxx");
        dsc.setPassword("xxxx");
        dsc.setTypeConvert(new MySqlTypeConvertCustom());
        mpg.setDataSource(dsc);
        StrategyConfig strategy = new StrategyConfig();
        strategy.setTablePrefix("saas_");
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setInclude("saas_medical_history", "saas_medical_history_describe", "saas_medical_history_attachment",
                "saas_medical_history_diagnose", "saas_medical_history_prescription", "saas_medical_history_prescription_subjoin",
                "saas_medical_history_prescription_chinese_list", "saas_medical_history_prescription_generic_list", "saas_medical_history_feature");
        // 指定逻辑删除字段
        strategy.setLogicDeleteFieldName("is_deleted");
        mpg.setStrategy(strategy);
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.wjj.application");
        String packageModule = ".medicalhistory";
        pc.setController("controller"+packageModule);
        pc.setService("service"+packageModule);
        pc.setServiceImpl("service" + packageModule + ".impl");
        pc.setMapper("mapper" + packageModule);
        pc.setEntity("entity" + packageModule);
        mpg.setPackageInfo(pc);
        mpg.execute();
    }
}
/**
 * 自定义类型转换
 */
class MySqlTypeConvertCustom extends MySqlTypeConvert implements ITypeConvert{
    @Override
    public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
        String t = fieldType.toLowerCase();
        if (t.contains("tinyint(1)")) {
            return DbColumnType.INTEGER;
        }
        return super.processTypeConvert(globalConfig, fieldType);
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java并发编程实例分析

    java并发编程实例分析

    在本文里我们给大家分享了关于java并发编程实例分析以及相关知识点,需要的朋友们学习下。
    2019-03-03
  • Java动态代理语法Proxy类原理详解

    Java动态代理语法Proxy类原理详解

    这篇文章主要介绍了Java动态代理语法Proxy类原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot实现扫码登录的项目实践

    SpringBoot实现扫码登录的项目实践

    本文主要介绍了SpringBoot实现扫码登录的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • SpringMVC如何把后台文件打印到前台

    SpringMVC如何把后台文件打印到前台

    这篇文章主要介绍了SpringMVC如何把后台文件打印到前台,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java8中CompletableFuture使用场景与实现原理

    Java8中CompletableFuture使用场景与实现原理

    CompletableFuture是java8引入的新类,该类实现了Future接口和 CompletionStage接口,封装了future、forkjoin相关类来执行异步,这篇文章主要给大家介绍了关于Java8中CompletableFuture使用场景与实现原理的相关资料,需要的朋友可以参考下
    2022-02-02
  • Java设计模式之享元模式

    Java设计模式之享元模式

    这篇文章主要为大家详细介绍了Java设计模式之享元模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Java ArrayList扩容问题实例详解

    Java ArrayList扩容问题实例详解

    这篇文章主要介绍了Java ArrayList扩容问题实例详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Mybatis源码解析之事务管理

    Mybatis源码解析之事务管理

    大家好,本篇文章主要讲的是Mybatis源码解析之事务管理,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • SpringBoot2.0 中 HikariCP 数据库连接池原理解析

    SpringBoot2.0 中 HikariCP 数据库连接池原理解析

    这篇文章主要介绍了SpringBoot2.0 中 HikariCP 数据库连接池原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 如何使用IntelliJ IDEA的HTTP Client进行接口验证

    如何使用IntelliJ IDEA的HTTP Client进行接口验证

    这篇文章主要介绍了如何使用IntelliJ IDEA的HTTP Client进行接口验证,本文给大家分享最新完美解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-06-06

最新评论