如何使用mybatis 自动生成代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用mybatis 自动生成代码相关的知识,希望对你有一定的参考价值。

参考技术A 利用mybatis-generator自动生成代码
一、在pom.xml中添加plugin
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
其中generatorConfig.xml的位置,自行调整。
二、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>
<classPathEntry
location="C:/Oracle/Middleware/wlserver_10.3/server/lib/ojdbc6.jar"/>
<context id="my" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="false"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>

<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@172.20.16.***:1521:CARGO" userId="***"
password="***"/>

<javaModelGenerator targetPackage="ctas.test.entity"
targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>

<sqlMapGenerator targetPackage="ctas.test.entity.xml"
targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>

<javaClientGenerator targetPackage="ctas.test.mapper"
targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>

<!--<table tableName="T_FEE_AGTBILL" domainObjectName="FeeAgentBill"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false"/>-->

<table tableName="CTAS_FEE_BASE" domainObjectName="FeeBase"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
<!--<columnRenamingRule searchString="^D_"
replaceString=""/>-->
</table>

</context>
</generatorConfiguration>
几个要点:
a) 因为生成过程中需要连接db,所以第3行指定了驱动jar包的位置
b) 15-17行为连接字符串
c) 19-33行指定生成“entity实体类、mybatis映射xml文件、mapper接口”的具体位置
d) 40-46行为具体要生成的表,如果有多个表,复制这一段,改下表名即可
三、使用方式
mvn mybatis-generator:generate
如果是在intellij 环境,直接鼠标点击即可

Mybatis自动化生成代码

Mybatis是Java EE中比较主流的一种持久化orm框架,其缺点是不够灵活,需要写的代码较多,包括:

  • 一个sql-map-config.xml
  • 对应每个表的xml文件
  • 对应每个表的实体POJO
  • DAO(数据访问对象)

好在官方提供了mybatis-generator这个组件,经过对官方例子的学习,已经正式在项目中应用了自动化代码,腰不酸腿不疼了,大大提高了生产效率。

如何使用

首先需要准备三个东西:

  • mybatis-generator-core.jar 自动化需要的jar包
  • mybatis-generator.xml 文件,里面需要配置数据源和一系列的自动化规则
  • 执行脚本

一项一项说,mybatis-generator-core.jar 这个jar包,官网上可以下载,作者使用的是1.3.2版本。
做个网盘方便懒人吧:http://pan.baidu.com/s/1dFDhWxN

mybatis-generator.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="/Users/xxxx/workspace/xxx/lib/mysql-connector-java-5.1.5-bin.jar" />
    <context id="MysqlContext" targetRuntime="Ibatis2Java2" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <commentGenerator>
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx"
                        userId="your_account"
                        password="your_password">
        </jdbcConnection>
        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <javaModelGenerator targetPackage="generate.model" targetProject="/Users/xxxx/workspace/xxxx/src/main/java">
            <property name="trimStrings" value="true" />
            <property name="enableSubPackages" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="generate"  targetProject="/Users/xxxx/workspace/xxxx/src/main/resources/db">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>


        <javaClientGenerator type="SPRING" targetPackage="generate.dao"  targetProject="/Users/xxxx/workspace/xxxx/src/main/java"/>

        <table tableName="open_user" domainObjectName="OpenUser"
               enableSelectByPrimaryKey="true"
               enableSelectByExample="false"
               enableDeleteByPrimaryKey="true"
               enableDeleteByExample="false"
               enableCountByExample="false"
               enableUpdateByPrimaryKey="true"
               enableUpdateByExample="false"
               selectByExampleQueryId="false"
               selectByPrimaryKeyQueryId="false"
        >
            <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
        </table>
    </context>
</generatorConfiguration>

略微做一些解释:其中项目地址和数据源很清楚,需要正确配置。javaModelGenerator和sqlMapGenerator标签中的targetPackage是需要把自动生成的代码放到什么位置。我的做法是先统一放到一个地方generate文件夹,然后根据需要挪到目标文件夹,这样不用每次修改这个targetPackage。每次只需要修改tableName即可。

其次就是table中的一系列属性如enableSelectByPrimaryKey,含义是是否需要某某方法。这里如果全部是true,将会生成一个非常长的sqlmap文件,很不清晰,我这里只把最基本的CRUD操作放了出来,复杂查询还是后续自己手工写。

另外,项目使用的是Spring+Mybatis,所以使用的是Spring的SqlMapClientTemplate,所以javaClientGenerator是type="SPRING"。

还有context中targetRuntime这儿是跟你的Mybatis版本有关,作者使用的是古老的ibatis2.3.4,比较稳定(后来的Mybatis会有一些新引入的问题,这里不赘述了),所以这里用的是Ibatis2Java2。

最后,执行脚本的话是这样的:

java -jar ~/workspace/xxxx/lib/mybatis-generator-core-1.3.2.jar -configfile ~/workspace/xxxx/src/main/resources/db/generator.xml -overwrite



作者:纳达丶无忌
链接:https://www.jianshu.com/p/11e7629938c1
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。






以上是关于如何使用mybatis 自动生成代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在idea中使用Mybatis-generator插件快速生成代码

MyBatis,如何获取插入的自动生成密钥? [MySql]

如何在idea中使用Mybatis-generator插件快速生成代码

Mybatis自动化生成代码

使用Mybatis Generator自动生成Mybatis相关代码

使用MyBatis Generator自动生成MyBatis的代码