美文网首页
MyBatis Generator 针对MYSQL的使用

MyBatis Generator 针对MYSQL的使用

作者: xiaofudeng | 来源:发表于2017-11-05 13:35 被阅读0次

参考

李晨玮 - 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
官方文档, 这里包含了每个部分的配置详情.

MyBatis Generator下载地址

官方下载地址

配置文件 generatorConfig.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>
    <!--数据库驱动-->
    <!--注意要保证运行MyBatis Generator的时候能够找到mysql的connector-->
    <!-- location   The full path name of a JAR/ZIP file to add to the classpath, or a directory to add to the classpath.-->
    <classPathEntry    location="mysql-connector-java-6.0.6.jar"/>
    <!-- A unique identifier for this context. This value will be used in some error messages. -->
    <context id="mysql2java"    targetRuntime="MyBatis3">
        <!-- http://www.mybatis.org/generator/configreference/commentGenerator.html -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/syllabus" userId="username" password="password">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!--生成Model类存放位置-->
        <!-- targetProject 指定存放生成文件的根目录-->
        <javaModelGenerator targetPackage="me.xiaofud.model" targetProject="src">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="me.xiaofud.mapping" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao类存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="me.xiaofud.dao" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!--配置MBG对哪个数据表进行生成工作, 对于MYSQL数据库来说, 因为没有SCHEMA这个概念, 必须使用catalog来指定到底用哪个数据库, 否则如果多个数据库有同名表, MYBATIS会自己选一个-->
        <table tableName="users" catalog="syllabus"  domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>

        <table tableName="posts" catalog="syllabus" domainObjectName="Post" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

对于MYSQL的使用, 有几点需要注意的地方. 在我的实际使用中, 即使connectionURL中指定了需要连接的数据库, 如果在后面的<table>中不指定catalog, 而且在多个database中有相同名字的table的话, 那么MBG会给出警告, 但是它会直接自己选择一个table, 往往不是自己想要指定的表.
使用catalog能奏效, 灵感来源于https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html,
如果没有指定catalog而又有多张同名的表, 则会出现以下警告:

Table Configuration syllabus.users matched more than one table (java_web..users,shop..users,syllabus..users,laravel_blog..users,performance_schema..users,hr_qa..users)

MYSQL文档:

If the database is not specified, the connection is made with no default database. In this case, either call the setCatalog() method on the Connection instance, or fully specify table names using the database name (that is, SELECT dbname.tablename.colname FROM dbname.tablename...) in your SQL. Opening a connection without specifying the database to use is generally only useful when building tools that work with multiple databases, such as GUI database managers.

运行

目录结构如下:

.
├── generatorConfig.xml
├── mybatis-generator-core-1.3.5.jar
├── mysql-connector-java-6.0.6.jar
└── src

执行:

java -jar mybatis-generator-core-1.3.5.jar -configfile generatorConfig.xml -overwrite

overwrite参数含义如下:

This will tell MBG to run using your configuration file. It will also tell MBG to overwrite any existing Java files with the same name. If you want to save any existing Java files, then omit the -overwrite parameter. If there is a conflict, MBG will save the newly generated file with a unique name (e.g. MyClass.java.1).

相关文章

网友评论

      本文标题:MyBatis Generator 针对MYSQL的使用

      本文链接:https://www.haomeiwen.com/subject/ndmcmxtx.html