今天來記錄下mybatis-generator插件自動生成xml mapper和model還有dao接口,這樣咱們就能夠把精力放在業務代碼上,而不須要關心數據庫的具體操做。java
這裏我使用eclipse做爲開發工具,採用maven來構建項目。mysql
這裏只有3個jar文件,數據庫使用mysqlsql
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jacksoft.mybatis</groupId> <artifactId>mybatis-generator</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <mybatis-generator.version>1.3.1</mybatis-generator.version> <mysql.version>5.1.13</mysql.version> <mybatis.version>3.0.3</mybatis.version> </properties> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>${mybatis-generator.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>${mybatis-generator.version}</version> <configuration> <configurationFile>src/main/resources/config/mysqlGeneratorConfig.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver> <jdbcURL>jdbc:mysql://localhost:3306/demo</jdbcURL> <jdbcUserId>root</jdbcUserId> <jdbcPassword>hwroot</jdbcPassword> </configuration> <!-- 自動生成 --> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions> <dependencies> <!-- 數據庫驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
我這裏經過配置插件,讓maven在執行 mvn mybatis-generator:generate 的時候,自動從新生成代碼,由於生成的代碼中包含mybatis包中的類,因此也須要引入該包。數據庫
在src/main/resources/config目錄下面建立mysqlGeneratorConfig.xml 文件,該文件是說明插件須要如何生成,以及生成對應的包名,路徑等信息。還有重要的就是咱們的表或者試圖,這裏能夠經過查看官方文檔,瞭解其具體的配置,好比重寫字段類型啊等等。這裏我只有一個表:apache
<?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> <!--數據庫驅動jar --> <!-- <classPathEntry location="E:\mysql-connector-java-5.1.7-bin.jar" /> --> <context id="mysqlTables" targetRuntime="MyBatis3"> <!--去除註釋 --> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--數據庫鏈接 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/wuyedatabase" userId="root" password="123456"> </jdbcConnection> <!--默認false Java type resolver will always use java.math.BigDecimal if the database column is of type DECIMAL or NUMERIC. --> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!--生成實體類 指定包名 以及生成的地址 (能夠自定義地址,可是路徑不存在不會自動建立 使用Maven生成在target目錄下,會自動建立) --> <javaModelGenerator targetPackage="com.jacksoft.mybatis.generator.model" targetProject="MAVEN"> <property name="enableSubPackages" value="false" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!--生成SQLMAP文件 --> <sqlMapGenerator targetPackage="com.jacksoft.mybatis.generator.mapper" targetProject="MAVEN"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!--生成Dao文件 能夠配置 type="XMLMAPPER"生成xml的dao實現 context id="mysqlTables" 修改targetRuntime="MyBatis3" --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.jacksoft.mybatis.generator.dao" targetProject="MAVEN"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!--對應數據庫表 mysql能夠加入主鍵自增 字段命名 忽略某字段等--> <table tableName="t_client" domainObjectName="Client" > </table> </context> </generatorConfiguration>
到這裏就差很少了,保存爲該文件後,右鍵pom.xml,在Maven Build中新建一個」mybatis-generator「,Goals設置爲「mybatis-generator:generate」,再設置一下其餘maven build屬性,而後點擊右下角的Run按鈕,就能夠在target目錄中自動生成相關的mybatis源碼。mybatis
具體以下圖:app
對應的mapper,xml,model,example都生成好了,是否是很方便啊?dom
可是該插件默認不帶分頁功能,分頁插件將在下一次記錄。eclipse
對於本身寫的插件沒法初始化的問題,能夠參照:maven
http://code.google.com/p/mybatis/issues/detail?id=343
也就是須要將本身的插件在配置plugin的時候加入,如:
<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>${mybatis-generator.version}</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.jacksoft</groupId> <artifactId>mybatis-plugins-paging</artifactId> <version>${mybatis.paging.version}</version> </dependency> </dependencies> </plugin>