设为首页 收藏本站
查看: 792|回复: 0

[经验分享] ibator1.2.1扩展支持Oracle、MySQL分页

[复制链接]

尚未签到

发表于 2016-8-6 07:50:25 | 显示全部楼层 |阅读模式
最近在项目中用到ibator1.2.1,但是感觉其自动生成的代码不能满足自己的需要,在网上找了资料:
1.eclipse ibabis代码生成插件abator功能扩展
2.aquan198163 写道 可以用iBatis的include标签设计类似模板的东西,简化分页sql
自己下载代码进行了相关扩展:
1.支持Oracle、MySQL分页
2.在生成的example类增加了Oracle、MySQL分页的相关字段
0.3版本:
增加了控制生成oracle分页和mysql分页的属性(原来是都生成)

<!--
<table tableName="BROWSELOGS" enableMysqlPagination="true">
<table tableName="BROWSELOGS" enableOraclePagination="false" >
-->
<table tableName="BROWSELOGS">
<columnOverride column="ID" javaType="Integer" />
<columnOverride column="VISITOR" javaType="Integer" />
<columnOverride column="DOTIME" jdbcType="Timestamp" />
</table>

当然这个时候,xml会报错,因为你引用的是网络上面的dtd("http://ibatis.apache.org/dtd/ibator-config_1_0.dtd"),不用理会,一样可以生成,如果都不填写,就是都不生成。
建议在ibatorContext加上Ibatis2Java5

<classPathEntry location="D:\UserLibraries\Oracle10g_driver.jar" />
<ibatorContext id="context" targetRuntime="Ibatis2Java5"  >

完整版的配置:

<?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="D:\UserLibraries\mysql-connector-java-5.1.12-bin.jar" />
<ibatorContext id="context1" targetRuntime="Ibatis2Java5">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/demo" userId="root"
password="aaa" />
<javaModelGenerator targetPackage="com.ibatis.pojo"
targetProject="test" />
<sqlMapGenerator targetPackage="com.ibatis.sqlmap"
targetProject="test" />
<daoGenerator targetPackage="com.ibatis.dao"
targetProject="test" type="SPRING" />
<table tableName="ueye_account" enableMysqlPagination="true">
<columnOverride column="ID" javaType="Integer" />
<columnOverride column="VISITOR" javaType="Integer" />
<columnOverride column="DOTIME" jdbcType="Timestamp" />
</table>
</ibatorContext>
</ibatorConfiguration>


0.2版本增加了:
4个list的set方法:


protected List criteriaWithoutValue;
protected List criteriaWithSingleValue;
protected List criteriaWithListValue;
protected List criteriaWithBetweenValue;

原来的方法里面没有set。只有get方法,我觉得有时候我不知道传入的是哪个字段,要自己定义一个条件不知道怎么放进去,我就想法先取出list,在set进去,如下:

////过滤条件,仿造的是example类中的情况
//Criteria criteria=example.createCriteria();
////得到example里面的list
//List<Object> listSingle=criteria.getCriteriaWithSingleValue();
////再把它注入回去
//criteria.setCriteriaWithSingleValue(this.processFilterInfo(listSingle, sigma.getFilterInfo()));
processFilterInfo方法:
public List<Object> processFilterInfo(List<Object> listSingle,List<FilterInfo> filterInfos){
for (int i = 0; i < filterInfos.size(); i++) {
String columnId=filterInfos.get(i).getColumnId();
String logic=filterInfos.get(i).getLogic();
String value=filterInfos.get(i).getValue();
if(logic.equalsIgnoreCase("equal")){
Map<String,Object> map = new HashMap<String,Object>();
map.put("condition", columnId+" =");
map.put("value", value);
listSingle.add(map);
}else if(logic.equalsIgnoreCase("notequal")){
Map<String,Object> map = new HashMap<String,Object>();
map.put("condition", columnId+" <>");
map.put("value", value);
listSingle.add(map);

清单一(修改的相关类):

org.apache.ibatis.ibator.generator.ibatis2.sqlmap---SqlMapGenerator
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.generator.ibatis2.sqlmap.elements---SelectByExampleWithBLOBsElementGenerator
org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements---SelectByExampleWithoutBLOBsElementGenerator
org.apache.ibatis.ibator.api.dom.java---FullyQualifiedJavaType
搜索“增加开始”或者“增加结束”就能找到修改的地方

SQL_MAP.xml部分:

<!-- oracle 分页头 -->
<sql id="oracle_Pagination_Head" >
<dynamic >
<isNotEmpty property="oracleStart" >
<isNotEmpty property="oracleEnd" >
<![CDATA[select * from ( select row_.*, rownum rownum_ from ( ]]>
</isNotEmpty>
</isNotEmpty>
</dynamic>
</sql>
<!-- oracle 分页尾 -->
<sql id="oracle_Pagination_Tail" >
<dynamic >
<isNotEmpty property="oracleStart" >
<isNotEmpty property="oracleEnd" >
<![CDATA[) row_ where rownum <= #oracleEnd# ) where rownum_ > #oracleStart#]]>
</isNotEmpty>
</isNotEmpty>
</dynamic>
</sql>
<!-- MySQL 分页 -->
<sql id="mysql_Pagination_Limit" >
<dynamic >
<isNotEmpty property="mysqlOffset" >
<isNotEmpty property="mysqlLength" >
<![CDATA[ limit #mysqlOffset# , #mysqlLength# ]]>
</isNotEmpty>
</isNotEmpty>
</dynamic>
</sql>
<select id="ibatorgenerated_selectByExample" resultMap="ibatorgenerated_BaseResultMap" parameterClass="com.ibatis.pojo.GoodsExample" >
<!-- 增加oracle分页头部 -->
<include refid="oracle_Pagination_Head" />
select id, name, stand, money, leavings, orders
from goods
<isParameterPresent >
<include refid="goods.ibatorgenerated_Example_Where_Clause" />
<isNotNull property="orderByClause" >
order by $orderByClause$
</isNotNull>
</isParameterPresent>
<!-- 增加oracle分页尾部 -->
<include refid="oracle_Pagination_Tail" />
<!-- 增加MySQL分页 -->
<include refid="mysql_Pagination_Limit" />
</select>

Example类部分:

public class GoodsExample {
protected String orderByClause;
private Integer oracleStart;
private Integer oracleEnd;
private Integer mysqlOffset;
private Integer mysqlLength;
protected List oredCriteria;
public GoodsExample() {
oredCriteria = new ArrayList();
}
}


附件为ibator1.2.1插件,直接复制到Eclipse的dropins文件夹下即可

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253529-1-1.html 上篇帖子: 创建链接服务器(oracle,sql server,access,excel) 下篇帖子: 在ORACLE中创建自增字段(sequence)的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表