在實際的項目中其實建立數據庫和設計數據庫的時候特別重要,而等數據庫設計完成之后,根據數據庫創建實體類的工作就特別麻煩和繁瑣了,不僅很麻煩,而且很浪費時間,不做又不行,這次就找到了一個簡單的方法可以讓myBatis幫你完成這件事情。
首先你需要一個Generator的myeclipes的插件,這個插件能在網上找到,安裝方法也很簡單就多說了。
下載了這個插件之后,新建一個xml,這個配置文件,就是對你所需要的實體類dao和xml進行合理的配置,看看你需要那些,不需要那些。
這里的配置我參考了網上給出的詳細配置如下:
轉載自:http://www.jianshu.com/p/e09d2370b796
這里把每個配置都講的很詳細了,需要不同配置的同學可以參考別的博客,或者直接參考官方的API
這里有一點需要注意的是,配置的順序不能錯,順序錯了,也是有可能無法使用的。
配置完成之后,只要右鍵這個配置文件,選擇mybatis插件的那個選項,就能生成你想要的實體類了。
但是后話要先說好,生成的實體類都是英文的注釋,你需要進行修改,生成的sql會不符合你的規范,需要你進行修改,接口的話需要你在spring中進行配置
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- mybatis接口 -->
<property name="basePackage" value="test.dao" />
</bean>
這樣才能用它的接口,否則的話是使用不了的,因為mybatis沒有幫你實現dao的實現層,而是只有接口就能調用xml的sql語句了,所以需要進行配置。
最后附上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" > <!-- mybatis生成配置 --> <generatorConfiguration> <!-- 數據庫連接jar路徑 --> <classPathEntry location="E:/mysql-connector-java-5.1.16-bin.jar"/> <!-- context:生成一組對象的環境 id:必選,上下文id,用於在生成錯誤時提示 defaultModelType:指定生成對象的樣式 1,conditional:類似hierarchical; 2,flat:所有內容(主鍵,blob)等全部生成在一個對象中; 3,hierarchical:主鍵生成一個XXKey對象(key class),Blob等單獨生成一個對象,其他簡單屬性在一個對象中(record class) targetRuntime: 1,MyBatis3:默認的值,生成基於MyBatis3.x以上版本的內容,包括XXXBySample; 2,MyBatis3Simple:類似MyBatis3,只是不生成XXXBySample; introspectedColumnImpl:類全限定名,用於擴展MBG --> <context id="mysql" defaultModelType="flat" targetRuntime="MyBatis3"> <!-- 自動識別數據庫關鍵字,默認false,如果設置為true,根據SqlReservedWords中定義的關鍵字列表; 一般保留默認值,遇到數據庫關鍵字(Java關鍵字),使用columnOverride覆蓋 --> <property name="autoDelimitKeywords" value="false"/> <!-- 生成的Java文件的編碼 --> <property name="javaFileEncoding" value="UTF-8"/> <!-- 格式化java代碼 --> <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/> <!-- 格式化XML代碼 --> <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/> <!-- beginningDelimiter和endingDelimiter:指明數據庫的用於標記數據庫對象名的符號, 比如ORACLE就是雙引號,MYSQL默認是`反引號; --> <!-- <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> --> <!-- 注釋信息 --> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="false"/> </commentGenerator> <!-- 數據庫連接設置,設置url,用戶名密碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/xex" userId="root" password="1qaz2wsx"> </jdbcConnection> <!-- java類型處理器 用於處理DB中的類型到Java中的類型,默認使用JavaTypeResolverDefaultImpl; 注意一點,默認會先嘗試使用Integer,Long,Short等來對應DECIMAL和 NUMERIC數據類型; --> <javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl"> <!-- true:使用BigDecimal對應DECIMAL和 NUMERIC數據類型 false:默認, scale>0;length>18:使用BigDecimal; scale=0;length[10,18]:使用Long; scale=0;length[5,9]:使用Integer; scale=0;length<5:使用Short; --> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 構建實體類 --> <!-- java模型創建器,是必須要的元素 負責:1,key類(見context的defaultModelType);2,java類;3,查詢類 targetPackage:生成的類要放的包,真實的包受enableSubPackages屬性控制; targetProject:目標項目,指定一個存在的目錄下,生成的內容會放到指定目錄中 --> <javaModelGenerator targetPackage="test.entity" targetProject="springMvcModelForTestGenerator"> <!-- for MyBatis3/MyBatis3Simple 自動為每一個生成的類創建一個構造方法,構造方法包含了所有的field;而不是使用setter; --> <property name="constructorBased" value="false"/> <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認為false --> <property name="enableSubPackages" value="false"/> <!-- for MyBatis3 / MyBatis3Simple 是否創建一個不可變的類,如果為true, 那么MBG會創建一個沒有setter方法的類,取而代之的是類似constructorBased的類 --> <property name="immutable" value="false"/> <!-- 設置一個根對象, 如果設置了這個根對象,那么生成的keyClass或者recordClass會繼承這個類;在Table的rootClass屬性中可以覆蓋該選項 注意:如果在key class或者record class中有root class相同的屬性,MBG就不會重新生成這些屬性了,包括: 1,屬性名相同,類型相同,有相同的getter/setter方法; --> <!-- <property name="rootClass" test.entity.BaseDomain"/> --> <!-- 設置是否在getter方法中,對String類型字段調用trim()方法 --> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成SQL map的XML文件生成器, 注意,在Mybatis3之后,我們可以使用mapper.xml文件+Mapper接口(或者不用mapper接口), 或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的話,這個元素就必須配置 targetPackage/targetProject:同javaModelGenerator --> <sqlMapGenerator targetPackage="test.mapping" targetProject="springMvcModelForTestGenerator"> <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認為false --> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 對於mybatis來說,即生成Mapper接口,注意,如果沒有配置該元素,那么默認不會生成Mapper接口 targetPackage/targetProject:同javaModelGenerator type:選擇怎么生成mapper接口(在MyBatis3/MyBatis3Simple下): 1,ANNOTATEDMAPPER:會生成使用Mapper接口+Annotation的方式創建(SQL生成在annotation中),不會生成對應的XML; 2,MIXEDMAPPER:使用混合配置,會生成Mapper接口,並適當添加合適的Annotation,但是XML會生成在XML中; 3,XMLMAPPER:會生成Mapper接口,接口完全依賴XML; 注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER --> <javaClientGenerator targetPackage="test.dao" type="XMLMAPPER" targetProject="springMvcModelForTestGenerator"> <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認為false --> <property name="enableSubPackages" value="true"/> <!-- 可以為所有生成的接口添加一個父接口,但是MBG只負責生成,不負責檢查 <property name="rootInterface" value=""/> --> </javaClientGenerator> <table tableName="user_tbl" domainObjectName="UserEntity" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
