主题:Ibator支持分页的plugin
时间: 2020-08-27来源:ITEYE
前景提要
相关推荐: ibator改造之返回数据库注释和数据库分页 ibatis的ibatorForEclipse的安装与配置和ibator的错误日志查看 Ibator优化版代码生成过程 Ibator支持分页的plugin mybatis (Ibatis ibator) generator - 1 mysql 分页插件(page/paging/pagination plugin) 基于Struts2+Spring+iBatis的web应用最佳实践系列之五(分页篇) ibator改造之返回数据库注释和数据库分页
推荐群组: struts2
更多相关推荐
iBATIS
首先声明:该文章 参照了 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: 以下是 ibator 的 java 启动模式,用来测试 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可直接拿到工程中使用
   
 
 
   
 
 
 
 
 

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行