mybatis Generator自動生成代碼

mybatis-generator 介紹maven插件和命令行兩種方式java

1、maven插件形式mysql

在pom.xml中添加plugingit

<!--maven生成mybatis文件-->
<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>
    <configuration>
        <!--配置文件的路徑 -->
        <configurationFile>src/main/resource/mybatis-generator.xml</configurationFile>
        <overwrite>true</overwrite>
    </configuration>
</plugin>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.6</version>
</dependency>
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.2.2</version>
    <type>jar</type>
</dependency>

2、mybatis-generator.xml配置文件github

<?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>
    <!-- 引入配置文件 -->
    <!--<properties resource="deploy.properties" /> -->
    <!--  <classPathEntry  location="mysql-connector-java-5.1.6.jar"/> -->
    <context id="context1" targetRuntime="MyBatis3">
        <!-- 配置內置的或者自定義的Plugin -->
        <!--plugin type="com.cmcc.order.mybatis.plugin.MysqlPaginationPlugin"/-->
        <!-- 註釋產生配置 -->
        <commentGenerator>
            <property name="suppressAllComments" value="false"/>
            <property name="suppressDate" value="false"/>
        </commentGenerator>
        <!-- 數據庫鏈接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://XXX.XX.XX.XX:3306/datasource?characterEncoding=UTF-8&amp;&amp;zeroDateTimeBehavior=convertToNull&amp;tinyInt1isBit=false"
                        userId="root" password="root"/>

        <!-- 生成Model對象路徑配置 -->
        <javaModelGenerator targetPackage="com.xxx.order.mybatis.auto.entity"
                            targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成sqlXML文件路徑配置 -->
        <sqlMapGenerator targetPackage="com.xxx.order.mybatis.auto.entity.xml"
                         targetProject="src\main\java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的類文件路徑配置 -->
        <javaClientGenerator targetPackage="com.xxx.order.mybatis.auto.dao"
                             targetProject="src\main\java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!--要生成哪些表 -->
        <table tableName="access_token_info" domainObjectName="AccessTokenInfo"/>
        <table tableName="INTERFACE_TABLE" domainObjectName="Interface"/>

    </context>

</generatorConfiguration>

幾個要點:
a) 由於生成過程當中須要鏈接db,因此第3行指定了驅動jar包的位置spring

b) 15-17行爲鏈接字符串sql

c) 19-33行指定生成「entity實體類、mybatis映射xml文件、mapper接口」的具體位置數據庫

d) 40-46行爲具體要生成的表,若是有多個表,複製這一段,改下表名便可api

 

3、使用方式mybatis

mvn mybatis-generator:generateoracle

若是是在intellij 環境,直接鼠標點擊便可

 

a) 建表時,字段名稱建議用"_"分隔多個單詞,好比:AWB_NO、REC_ID...,這樣生成的entity,屬性名稱就會變成漂亮的駝峯命名,即:awbNo、recId

b)oracle中,數值形的字段,若是指定精度,好比Number(12,2),默認生成entity屬性是BigDecimal型 ,若是不指定精度,好比:Number(9),指默認生成的是Long型

c)oracle中的nvarchar/nvarchar2,mybatis-generator會識別成Object型,建議不要用nvarchar2,改用varchar2

2、命令行形式:

新建文件夾mybatis-generator,存放mybatis-generator插件

 生成命令以下:java -jar mybatis-generator-core-1.3.2.jar -configfile mybatis-generator.xml -overwrite

 

3、遇到的問題

若是第十行不註釋掉:

執行命令後,出現以下提示:

E:\IHome_WorkSpace\mybatis-generator>java -jar mybatis-generator-core-1.3.2.jar -configfile mybatis-generator.xml -overwrite
Exception in thread "main" java.lang.RuntimeException: Cannot instantiate object of type com.cmcc.order.mybatis.plugin.MysqlPaginationPlugin
        at org.mybatis.generator.internal.ObjectFactory.createInternalObject(ObjectFactory.java:184)
        at org.mybatis.generator.internal.ObjectFactory.createPlugin(ObjectFactory.java:221)
        at org.mybatis.generator.config.Context.generateFiles(Context.java:491)
        at org.mybatis.generator.api.MyBatisGenerator.generate(MyBatisGenerator.java:234)
        at org.mybatis.generator.api.ShellRunner.main(ShellRunner.java:117)
Caused by: java.lang.ClassNotFoundException: com.cmcc.order.mybatis.plugin.MysqlPaginationPlugin
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:278)
        at org.mybatis.generator.internal.ObjectFactory.internalClassForName(ObjectFactory.java:150)
        at org.mybatis.generator.internal.ObjectFactory.createInternalObject(ObjectFactory.java:180)
        ... 4 more

 

解決辦法:

報插件沒法找到或者沒法實例化的通常是分頁插件和maven插件不在同一classloader下引發的,須要在mybatis-generator-maven-plugin的dependencies中增長dependency。 

1 把那個OraclePaginationPlugin 導出成jar包 
2 把那個jar包放到工程下任一位置,例如WebContent/WEB-INF/lib/ 

<dependency> 
    <groupId>隨便寫</groupId> 
    <artifactId>隨便寫</artifactId> 
    <version>隨便寫,例如1.0</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/WebContent/WEB-INF/lib/pagination-plugin.jar</systemPath> 
</dependency> 
    </dependencies> 
</plugin> 
  </plugins>

 

或者

<plugin> 
                <groupId>org.mybatis.generator</groupId> 
                <artifactId>mybatis-generator-maven-plugin</artifactId> 
                <version>1.3.2</version> 
                <executions> 
                    <execution> 
                        <id>Generate MyBatis Artifacts</id> 
                        <goals> 
                            <goal>generate</goal> 
                        </goals> 
                    </execution> 
                </executions> 
                <dependencies> 
                    <dependency> 
                       <!-- 你的插件jar--> 
                    </dependency> 
                </dependencies> 
            </plugin>

 

4、利用mybatis generator進行數據庫查詢

 

FilterExample filterExample = new FilterExample(); filterExample.createCriteria().andFieldEqualTo("op_object_id", objectId); List<BizOperLog> logList = bizOperLogService.getList(filterExample);

相關文章
相關標籤/搜索