Ibator支持分页的plugin

首先声明:该文章 参照了http://www.iteye.com/topic/674839   matychen  的文章,修改了一下ibator的工作方式,实际分页的原理还是一样的,支持oracle,mysql   , 如果涉及侵犯matychen的利益,请告知,我立即删除

 

/**

 *

 * @author coffeesweet

 *

 */

Ibator支持分页的plugin式的开发步骤

 

1:所涉及到修改的类列表:

org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements目录下所有的类里给attribute属性的id修改成如下:

FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
        answer.addAttribute(new Attribute("id", table.getSqlMapNamespace() + "."+XmlConstants.INSERT_STATEMENT_ID));

 

其他修改和添加的类

org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements---OraclePaginationHeadGenerator   

org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements---OraclePaginationTailGenerator   

org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements---MysqlPaginationLimitGenerator   

org.apache.ibatis.ibator.generator.ibatis2.model---ExampleGenerator

org.apache.ibatis.ibator.api.dom.java---FullyQualifiedJavaType

 

 org.apache.ibatis.ibator.api.dom.xml.XmlElement添加了四个方法,主要用于对xxxx_SqlMap.xml的元素删除和修改

 这个是添加的plugin

org.apache.ibatis.ibator.plugins.PaginationPlugin

 

以上所有修改的类搜索增加开始或者增加结束就能找到修改的地方

 

2:示例ibatorConfig.xml文件

 

一定要注意该xml的元素顺序

 

<classPathEntry标签的位置在<ibatorConfiguration>子元素的第一个位置

ibatorContext 的子元素顺序是

(property*, ibatorPlugin*, commentGenerator?, jdbcConnection, javaTypeResolver?,

 javaModelGenerator, sqlMapGenerator, daoGenerator?, table+)

所以需要注意ibatorPlugin的位置,还有,如果有多个plugin的话,加入第一个的validate失败,那么余下的所有plugin都不执行了

 

还要注意ibatorPlugin的两个必要属性

<property name="enablePagination" value="true" />

        <property name="dbType" value="oracle" />

 

示例ibatorConfig.xml

<?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="oracle驱动的本地绝对路径" />

    <ibatorContext id="context1" targetRuntime="Ibatis2Java5">

   

    <!--

    <ibatorPlugin type="org.apache.ibatis.ibator.plugins.RenameExampleClassPlugin">

            <property name="searchString" value="Example$" />

            <property name="replaceString" value="Criteria" />

    </ibatorPlugin>

     -->

    

     <ibatorPlugin type="org.apache.ibatis.ibator.plugins.PaginationPlugin">

        <property name="enablePagination" value="true" />

        <property name="dbType" value="oracle" />

     </ibatorPlugin>

     <!--

     <ibatorPlugin type="org.apache.ibatis.ibator.plugins.SerializablePlugin"></ibatorPlugin>

      -->

    

       <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"

           connectionURL="jdbc:oracle:thin:@*.*.*.*:1521:**" userId="**"

           password="**" />

 

       <javaTypeResolver>

           <property name="forceBigDecimals" value="false" />

       </javaTypeResolver>

 

 

       <javaModelGenerator targetPackage="com.mydomain.model"

           targetProject="src">

           <property name="enableSubPackages" value="false" />

           <property name="trimStrings" value="false" />

       </javaModelGenerator>

 

       <sqlMapGenerator targetPackage="com.mydomain.xml"

           targetProject="src">

           <property name="enableSubPackages" value="false" />

       </sqlMapGenerator>

 

       <daoGenerator type="SPRING" targetPackage="com.mydomain.dao"

           targetProject="src">

           <property name="enableSubPackages" value="false" />

       </daoGenerator>

 

 

       <table tableName="CC_TEST1" domainObjectName="Customer">

           <!-- columnOverride column="???" property="???" / -->

       </table>

      

             

    </ibatorContext>

</ibatorConfiguration>

 

3:以下是ibatorjava启动模式,用来测试

package org.apache.ibatis.ibator.test;

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("ibatorConfig.xml").getFile());
//			   File configFile = new File("ibatorConfig.xml");
			   IbatorConfigurationParser cp = new IbatorConfigurationParser(warnings);
//			   for(String warning:warnings){
//				   System.out.println("1---:"+warning);
//			   }
			   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("2---:"+warning);
			   }
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	

}

 

 

 

4:附件是ibator的修改后的源码(包括spring的lib)和jar包,以及测试case

  源码里的有关数据连接信息的东西请自行修改

测试用到了spring

ibator.jar可直接拿到工程中使用

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值