温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何解决Mybatis Generator将tinyint映射为Byte和Boolean的问题

发布时间:2021-10-19 17:20:34 来源:亿速云 阅读:991 作者:小新 栏目:大数据

小编给大家分享一下如何解决Mybatis Generator将tinyint映射为Byte和Boolean的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1. 对于tinyint(4)映射为Byte

1.1 环境
  • spring boot 2.1.x

  • mybatis

  • tk.mybatis

  • mysql

1.2 自定义类型解析器

(1) 新建以下类

public class CustomerJavaTypeResolver extends JavaTypeResolverDefaultImpl {

    public CustomerJavaTypeResolver() {
        super();
        //把数据库的 TINYINT 映射成 Integer
        super.typeMap.put(Types.TINYINT, new JavaTypeResolverDefaultImpl.JdbcTypeInformation("TINYINT", new FullyQualifiedJavaType(Integer.class.getName())));
    }
}

(2)在pom.xml中加入

<build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.29</version>
                    </dependency>
                    <!--<dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.6</version>
                    </dependency>-->
                    <dependency>
                        <groupId>com.taco.cloud</groupId>
                        <artifactId>-generator-core</artifactId>
                        <version>1.0-SNAPSHOT</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.1.5</version>
                    </dependency>
                </dependencies>
                <!--<executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>-->
                <configuration>
                    <!--允许移动生成的文件 -->
                    <verbose>true</verbose>
                    <!-- 是否覆盖 -->
                    <overwrite>true</overwrite>
                    <!-- 自动生成的配置 -->
                    <configurationFile>
                        src/main/resources/mybatis-generator.xml</configurationFile>
                </configuration>
            </plugin>
        </plugins>
    </build>

(3)修改mybatis-generator.xml文件,加入

<javaTypeResolver type="com.taco.springcloud.generator.CustomerJavaTypeResolver">
            <!--
            true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
            false:默认,
               scale>0;length>18:使用BigDecimal;
               scale=0;length[10,18]:使用Long;
               scale=0;length[5,9]:使用Integer;
               scale=0;length<5:使用Short;
             -->
            <property name="forceBigDecimals" value="false"/>

        </javaTypeResolver>

2. 对于tinyint(1)映射为Boolean情况

2.1 解决方法
  1. JDBC的URL增加 tinyInt1isBit=false参数,注意参数名区分大小写,否则不生效

    例如:jdbc:mysql://${ucmha.proxy1_2.host}/${db.mysql.db}?tinyInt1isBit=false

  2. 用tinyint(2)代替

以上是“如何解决Mybatis Generator将tinyint映射为Byte和Boolean的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI