修改 ibatis 分页机制(ORACLE物理分页)

针对ibatis 分页机制的修改例子网上也有很多,本人也是参考后做的修改.如下:

1、首先增加配置文件

此类是继承地层分页代码从而实现修改SQL语句

修改语句接口

实现类

2、增加继承类(ibatis调用地层类)

本人使用springside作为执行数据库地层类,所以直接修改IBatisGenericDao继承为XSqlMapClientDaoSupport就可以

3、为所有SPRING配置文件增加初始化方法,作用是修改IBATIS地层SqlMapClientDaoSupport的实现类,使用我们自己写的类,以便方便控制于修改SQL

 

到此步,已经完成分页修改,和网上说的改法基本一致。

原理,初始化自己BEAN的同时也会初始化到父类父类。。。默认初始化方法initialized来进行修改IBATIS

经测试出现问题:已知一未初始化SQLMAP,使用分页进行初始化(SQLMAP会多映射一列,ORACLE3层分页导致),在进行不分页查询会出现少列错误,也就是说SQLMAP 多了一个映射列,查询语句无法进行完整匹配。SQLMAP唯一不足的是:SQLMAP映射可以不查询出的列少,但是绝对不允许多,现在我们使用分页初始化就多出一列。本人的解决办法是直接修改JAR包(未找到好的解决办法)


com.ibatis.sqlmap.engine.mapping.result.ResultMap 中 getPrimitiveResultMappingValue方法进行修改

增加过滤条件判断
 if(columnName.equals("ROWNUM_"))
                value = "";

(直接哪JAVA文件进行修改编译,然后直接替换包中CLASS,如需要可以所要)

最后提一点,也是容易忽略的地方,加了ORACLE分页后,原始SQL不能出现重复列、rownum,否则提示无法映射列错误!如 select * from tablea as a, tableb as b  where a.id=b.id 这样语句加上分页就会出现ID无法映射,两表都包含ID外层分页SQL无法解析ID是从那个表来的。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值