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&&zeroDateTimeBehavior=convertToNull&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 环境,直接鼠标点击即可
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插件
生成命令如下:java -jar mybatis-generator-core-1.3.2.jar -configfile mybatis-generator.xml -overwrite
三、遇到的问题
如果第十行不注释掉:
执行命令后,出现如下提示:
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