ibator改造之返回数据库注释和数据库分页

插件基于ibator1.2.2(http://svn.apache.org/repos/asf/ibatis/java/ibator)

个人感觉用ibator Eclipse插件不如直接用这种方式生产代码方便,出错几率小的多,还能log跟踪

参考资料

更新:

  <!-- 修改dao里面返回值,把增删改的返回值由整型改为布尔型 -->
  <ibatorPlugin type="org.apache.ibatis.ibator.plugins.ChangeReturnPlugin" />
package ibator;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.ibator.api.Ibator;
import org.apache.ibatis.ibator.config.IbatorConfiguration;
import org.apache.ibatis.ibator.config.xml.IbatorConfigurationParser;
import org.apache.ibatis.ibator.internal.DefaultShellCallback;

public class IbatorRunTest {

    public static void main(String... strings) {
        try {
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            File configFile = new File(ClassLoader.getSystemResource("ConfigIbatisExample.xml").getFile());
            IbatorConfigurationParser cp = new IbatorConfigurationParser(
                    warnings);
            IbatorConfiguration config = cp
                    .parseIbatorConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            Ibator ibator = new Ibator(config, callback, warnings);
            ibator.generate(null);
            for (String warning : warnings) {
                System.out.println("warning:" + warning);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

修改日志

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ibatorConfiguration
  PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN"
  "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd">

<ibatorConfiguration>
    <classPathEntry location="E:/jars/ojdbc/ojdbc14_10.2.0.4.jar" />
    <ibatorContext id="FlatJava5" targetRuntime="Ibatis2Java5">
        <property name="suppressTypeWarnings" value="true" />
        <!-- Serializable化 -->
        <ibatorPlugin type="org.apache.ibatis.ibator.plugins.SerializablePlugin" />
        <!-- 这个插件添加方法为例(实际上的内部类)来支持不区分大小写像搜索。这个演示了增加功能,通过一个实例类插件,而不是延长上课。 -->
        <ibatorPlugin type="org.apache.ibatis.ibator.plugins.CaseInsensitiveLikePlugin" />
        <!-- 分页 -->
        <ibatorPlugin type="org.apache.ibatis.ibator.plugins.PaginationPlugin">
            <property name="enablePagination" value="true" />
            <!-- mysql or oracle -->
            <property name="databaseType" value="oracle" />
        </ibatorPlugin>
        <!-- 重命名example类 -->
        <ibatorPlugin
            type="org.apache.ibatis.ibator.plugins.RenameExampleClassPlugin">
            <property name="searchString" value="Example$" />
            <property name="replaceString" value="Criteria" />
        </ibatorPlugin>
        <!-- 产生sqlmap.xml
        <ibatorPlugin type="org.apache.ibatis.ibator.plugins.SqlMapConfigPlugin">
            <property name="targetPackage" value="ibatortest.generated.flat" />
            <property name="targetProject" value="src" />
        </ibatorPlugin>
        -->

        <!-- driverClass="com.mysql.jdbc.Driver" -->
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ora10g" userId="test"
            password="test" >
            <!-- 是否返回数据库注释,MySQL默认是true,oracle默认是false -->
            <property name="remarksReporting" value="true"/>
            </jdbcConnection>
        <javaModelGenerator targetPackage="test.pojo"
            targetProject="src">
            <!-- 如果为TRUE,下面的设置了schema,那么包名就是会增加个schema名,
            如果schema=“aaa”  , test.pojo.aaa.XXXX;
            <property name="enableSubPackages" value="true" />
             -->
             <!-- 继承哪个父类,这个为了有时候日志需要打印整个对象,而采用的apache打印对象的每个属性 -->
             <property name="rootClass" value="ibator.BaseBean" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="test.sqlmap"
            targetProject="src">
            <!--
            <property name="enableSubPackages" value="true" />
             -->
        </sqlMapGenerator>

        <daoGenerator type="SPRING" targetPackage="test.dao" implementationPackage="test.dao.impl"
            targetProject="src">
            <!--
            <property name="enableSubPackages" value="true" />
             -->
        </daoGenerator>

        <!--
        如果数据库里面有多个相同表名在不同的schema下,那么你得加上:
        schema="XXXX"和<property name="ignoreQualifiersAtRuntime" value="true" />
        不然ibator会以找到的最后一个为最终对象,这个问题苦恼了我很久,后来才发现
         -->
        <table tableName="OTA_APPLETE_INFO" schema="XXX">
         <!-- 忽略schema,避免在xml中出现schema.表名
          -->
         <property name="ignoreQualifiersAtRuntime" value="true" />
          <!-- 精确到时分秒时,需要设置下:  jdbcType="TIMESTAMP"-->
          <columnOverride column="UPDATED_DATE" jdbcType="TIMESTAMP"/>
        </table>
    </ibatorContext>
</ibatorConfiguration>

所有源码可以在github上面找到

原文链接

扩展ibator1.2.1支持Oracle、MySQL分页