mybatis Generator自动生成代码

mybatis-generator 介绍maven插件和命令行两种方式

一、maven插件形式

在pom.xml中添加plugin

<!--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>

二、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>
    <!-- 引入配置文件 -->
    <!--<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包的位置

b) 15-17行为连接字符串

c) 19-33行指定生成“entity实体类、mybatis映射xml文件、mapper接口”的具体位置

d) 40-46行为具体要生成的表,如果有多个表,复制这一段,改下表名即可

 

三、使用方式

mvn mybatis-generator:generate

如果是在intellij 环境,直接鼠标点击即可

mybatis Generator自动生成代码

 

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

二、命令行形式:

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

mybatis Generator自动生成代码

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

 

三、遇到的问题

如果第十行不注释掉:

mybatis Generator自动生成代码

执行命令后,出现如下提示:

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>

 

四、利用mybatis generator进行数据库查询

 

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

转载于:https://my.oschina.net/u/560971/blog/1538991