使用mybatis-generator插件可以很輕松的實現(xiàn)mybatis的逆向工程,即,能通過表結(jié)構(gòu)自動生成對應(yīng)的java類及mapper文件,可以大大提高工作效率,并且它提供了很多自定義的設(shè)置可以應(yīng)對不同的需求,最近做公司新開的一個項目就是使用到了它,簡單粗暴.

下面介紹詳細(xì)的使用步驟和注意事項,我的項目環(huán)境是idea+maven+ssm,但是我新建了一個空的maven項目專門用來生成java代碼,然后再把它有選擇的copy到自己的項目環(huán)境中.

1.新建一個空的webapp類型的maven項目.

2.在pom.xml文件中加入mybatis-generator插件的配置:

復(fù)制代碼
<build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build>
復(fù)制代碼

3.在resources包下新建一個generatorConfig.xml:

復(fù)制代碼
<?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> <!-- 指定數(shù)據(jù)庫驅(qū)動的地址 這是我mac下的絕對路徑--> <classPathEntry location="/Users/wyg/personal/視頻教程/generatorSqlmapCustom/lib/mysql-connector-java-5.1.28-bin.jar" /> <!--一個數(shù)據(jù)庫 對應(yīng)一個context--> <!-- context:生成一組對象的環(huán)境
    id:必選,上下文id,用于在生成錯誤時提示
    defaultModelType:指定生成對象的樣式
        1,conditional:類似hierarchical;
        2,flat:所有內(nèi)容(主鍵,blob)等全部生成在一個對象中;
        3,hierarchical:主鍵生成一個XXKey對象(key class),Blob等單獨生成一個對象,其他簡單屬性在一個對象中(record class)
    targetRuntime:
        1,MyBatis3:默認(rèn)的值,生成基于MyBatis3.x以上版本的內(nèi)容,包括XXXBySample;
        2,MyBatis3Simple:類似MyBatis3,只是不生成XXXBySample;
    introspectedColumnImpl:類全限定名,用于擴(kuò)展MBG --> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自動生成的注釋 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--數(shù)據(jù)庫連接的信息:驅(qū)動類、連接地址、用戶名、密碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/shop" userId="root" password="123"> </jdbcConnection> <!-- 默認(rèn)false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 和 
            NUMERIC 類型解析為java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject:生成PO類的位置 --> <javaModelGenerator targetPackage="com.ximalaya.shop.data1" targetProject="src/main/java" > <!-- enableSubPackages:是否讓schema作為包的后綴 --> <property name="enableSubPackages" value="false" /> <!-- 從數(shù)據(jù)庫返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="com.ximalaya.shop.mapper1" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema作為包的后綴 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <!-- 客戶端代碼,生成易于使用的針對Model對象和XML配置文件 的代碼
                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對象
                type="MIXEDMAPPER",生成基于注解的Java Model 和相應(yīng)的Mapper對象
                type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口 --> <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.ximalaya.shop.mapper1" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema作為包的后綴 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定數(shù)據(jù)庫表 --> <table schema="" tableName="tb_order"> <property name="modelOnly" value="false"/> </table> <table schema="" tableName="tb_order_product"> <property name="modelOnly" value="false"/> </table> <table schema="" tableName="tb_order_status"> <property name="modelOnly" value="false"/> </table> </context> </generatorConfiguration>
復(fù)制代碼

這里需要注意的有兩點,第一個就是配置好自己的數(shù)據(jù)庫驅(qū)動,我本來將mysql-connector-java-5.1.28-bin.jar直接引入到項目中,然后就忽略了這個標(biāo)簽,但是運行失敗,找不到數(shù)據(jù)庫驅(qū)動,然后我加上該標(biāo)簽,指向文件中的mysql-connector-java-5.1.28-bin.jar的絕對路徑,就好了.第二個就是javaClientGenerator標(biāo)簽里的type,在注釋中有詳細(xì)解釋,這里可以根據(jù)你實際的需求生成不同類型的java代碼.

配置完之后,直接在當(dāng)前項目下輸入命令行:mvn mabatis-generator:generate,注意我的項目名稱是shopTest所以在該目錄下運行.

如果能看到BUILD SUCCESS,那就證明操作成功了,去你指定的src目錄下查看生成的代碼即可.