如果你使用過hibernate的eclipse插件自動創建DAO文件,那么就容易理解下面介紹的內容;如果你還沒有用過hibernate也無妨。下面介紹使用mybatis 3的eclipse插件自動生成相關文件以及如何使用這些文件。
eclipse插件安裝地址:http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/
附件有link安裝包,link安裝方式參考http://maimode.iteye.com/admin/blogs/1164524
MyBatis Generator詳細介紹參見:http://code.google.com/p/mybatis/wiki/Generator
安裝插件的過程就不說了,安裝完后,eclipse中File-》new-》other中會發現多了mybatis選項說明插件安裝成功。
如何使用插件
在任意項目中利用上圖中的向導創建generatorConfig.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> <!-- <classPathEntry location="y:\\workspace\pojo\WebContent\WEB-INF\lib\ojdbc14.jar" /> --> <classPathEntry location="e:\\pojo\WebContent\WEB-INF\lib\mysql-connector-java-5.1.26-bin.jar" /> <context id="Oracle" targetRuntime="MyBatis3"> <!-- 開啟注釋 --> <commentGenerator> <property name="suppressAllComments" value="false" /> </commentGenerator> <!-- 數據庫連接 --> <!-- connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:orcl" userId="orcl" password="orcl"> --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password=""> </jdbcConnection> <!--允許數值類型轉換成不同類型,否則都映射為BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 模型文件 --> <javaModelGenerator targetPackage="cn.com.sgcc.model" targetProject="webserver/src"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- XML映射文件 --> <sqlMapGenerator targetPackage="com.my.xml" targetProject="webserver/src"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- DAO文件(mapper接口) --> <javaClientGenerator targetPackage="com.my.dao" targetProject="webserver/src" type="XMLMAPPER"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 數據庫表 --> <!-- <table tableName="T_USER" domainObjectName="User"> <property name="useActualColumnNames" value="false" />--> <!-- <generatedKey column="ID" sqlStatement="DB2" identity="true" /> <columnOverride column="DATE_FIELD" property="startDate" /> <ignoreColumn column="FRED" /> <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> --> <!-- </table> --> <table tableName="T_USERDETAIL" domainObjectName="UserDetail"> <!-- useActualColumnNames屬性是為了使生成的model字段與數據庫的字段大小寫不一致 --> <property name="useActualColumnNames" value="false" /> </table> </context> </generatorConfiguration>
根據名稱應該能才出來大致的意思。
配置好連接數據庫及表的信息后就可以利用插件自動生成代碼了。
點擊上圖中的選項,如果配置正確,便自動創建相關文件了。
文件主要有三類:
client包,mapper 接口文件
model包,實體bean文件
mapper包,mapper xml文件
如何使用這些自動生成的文件
首先需要將mapper包下的xml文件添加到mybatis的sqlmapper文件中
然后程序中這樣使用:
- public List<TrackBean> selectTrackOnRoute(String routeName) {
- List<TrackBean> rt = null;
- SqlSession session = null;
- try {
- session = sqlSessionFactory.openSession();
- AtfmTrackMapper mapper = session.getMapper(AtfmTrackMapper.class);
- // 構造查詢條件
- AtfmTrackExample example = new AtfmTrackExample();
- example.createCriteria()
- .andRouteIs(routeName);
- // 查詢
- List<AtfmTrack> list = mapper.selectByExample(example);
- // 包裝成TrackBean
- rt = this.toTrackBean(list);
- } catch (Exception e) {
- e.printStackTrace();
- logger.error(e.getMessage());
- } finally {
- if (session != null)
- session.close();
- }
- return rt;
- }
如果where條件比較復雜,還可以自定義查詢條件,如上例中andRouteIs(routeName)就是自定義的查詢條件。可以在
具體的Example的內部類Criteria中自定義查詢條件:
- public Criteria andRouteIs(String routeName){
- StringBuffer sb = new StringBuffer("point_name in " +
- "(select p.point from route_point p where p.route = '" + routeName + "') " +
- "AND FLIGHT_NO IN " +
- "(select D.FLIGHT_NO from syn_aftn_dynamic_recent d " +
- "where d.route like '%" + routeName + "%')");
- addCriterion(sb.toString());
- return this;
- }
我們可能會擔心一旦重新執行generate的時候,我們自己編寫的代碼會不會丟失,不會的,插件不會修改或丟棄我們自己編寫的代碼。
一旦掌握了插件如何使用,重要的工作就是如何使用XXXExample類了。這種方式,完全不用編寫繁瑣的mapper xml文件。