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&&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包的位置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);