</pre>前几天刚学习了mybatis,之后就在我写的某个列子中加上一层mybatis来访问oracle数据库,一般的增删改查经过测试都没有问题,唯一留下oracle的分页查询,一开始自然而然的就想当然的把oracle分页查询语句写进userInfo.xml中<p></p><p></p><pre name="code" class="html"><select id="queryUserListForPage" parameterclass="Page" resultmap="UserInfoResult">select * from (select t.*, ROWNUM RM from (select * from tb_user_info) t where ROWNUM<=#max# ) where RM> #offset#</select>但该xml文件会报语法错误,不信,运行果然出错了,尝试多种方法之后还是不行。最后想到了一种流氓的办法终于搞定了
废话不说 代码说话
userInfo.xml
<select id="queryUserListForPage" parameterClass="string" resultMap="UserInfoResult">
$sql$
</select>package com.is.dao.ibatis.impl;
/**
* Oracle分页查询语句生成类 为ibatis实现分页设计
*
* @author qiulongjie
*
*/
public class PageInfo {
private int offset;
private int max;
private String sql;
public PageInfo() {
}
public PageInfo(int offset, int max) {
this.offset = offset;
this.max = max;
this.sql = "select * from (select t.*, ROWNUM RM from (select * from tb_user_info) t where ROWNUM<=" + this.max
+ " ) where RM> " + this.offset;
System.out.println(sql);
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
}数据访问层的数据查询代码
public List<UserInfo> getUserInfoForPage(int offset, int max) {
List<UserInfo> userInfos = new ArrayList<UserInfo>();
try {
userInfos = IbatisUtil.getSqlMapClient().queryForList("queryUserListForPage",
new PageInfo(offset, max).getSql());
} catch (SQLException e) {
e.printStackTrace();
}
return userInfos;
}这样就搞定了!!不过这有安全上的问题
版权声明:本文为qiulongjiemajianyun原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。