MyBatis Generator相关问题

MySql使用说明

Unsigned Fields

MySql支持signed and unsigned字段。这些不是JDBC类型,因此MyBatis生成器无法自动考虑这些类型的字段。Java数据类型始终是signed。使用unsigned字段时,这可能导致数据类型不精确。解决方案是为MySql中的任何unsigned字段提供 <columnOverride>。这是一个如何处理MySql中未签名的bigint字段的示例:

 <table tableName="ALLTYPES" >
    <columnOverride column="UNSIGNED_BIGINT_FIELD" javaType="java.lang.Object" jdbcType="LONG" />
 </table>

* 您必须自己将返回值强制转换为适当的类型(在本例中为 java.math.BigInteger

Catalogs and Schema

MySql不正确地支持SQL catalogs and schema。如果您在MySql中运行create schema命令,它实际上会创建一个database  – JDBC驱动程序会将其报告为catalog。但是MySql语法不支持标准catalog..table SQL语法。

因此,最好不要在生成器配置中指定catalog or schema。只需指定表名、数据库即可。

如果您使用的是version 8.x of Connector/J,您会注意到,生成器同时会为MySql内置表,如(sys, information_schema, performance_schema, etc.)生成代码。这应该不是您想要的,要禁用这种行为,请将属性“ nullCatalogMeansCurrent = true”添加到JDBC URL。

例如:

 <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/my_schema"
            userId="my_user" password="my_password">
      <property name="nullCatalogMeansCurrent" value="true" />
  </jdbcConnection>

以下是我生成mysql8.0,test数据库中的xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 <generatorConfiguration>
     <!--数据库驱动-->
     <classPathEntry location="mysql-connector-java-8.0.18.jar"/>
     <context id="shangdaowuenlu" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
         </commentGenerator>
         <!--数据库链接地址账号密码-->
         <jdbcConnection 
         driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC"
         userId="test" 
         password="test">
           <property name="nullCatalogMeansCurrent" value="true"/>
         </jdbcConnection>
   
         <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
         </javaTypeResolver>
       
         <!--生成Model类存放位置-->
         <javaModelGenerator targetPackage="com.ikonke.mapper.repository" targetProject="d:\develop\tools\mybatisGenerator">
             <property name="enableSubPackages" value="true"/>
             <property name="trimStrings" value="true"/>
         </javaModelGenerator>
       
         <!--生成映射文件存放位置-->
         <sqlMapGenerator targetPackage="com.ikonke.mapper.repository.mapper" targetProject="d:\develop\tools\mybatisGenerator">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
      
         <!--生成Dao类存放位置-->
         <javaClientGenerator type="XMLMAPPER" targetPackage="com.ikonke.mapper.repository.mapper" targetProject="d:\develop\tools\mybatisGenerator">
             <property name="enableSubPackages" value="true"/>
         </javaClientGenerator>
       
         <!--生成对应表及类名-->
         <table tableName="%"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
         <property name="useActualColumnNames" value="true"/>
       </table>
    
   </context>
</generatorConfiguration>

官方文档:

http://mybatis.org/generator/usage/mysql.html

Leave a Comment