smile开发类库——SQLRunner分页查询数据库

[b]smile开发类库——SQLRunner分页查询数据库[/b]

本篇文章来介绍下smile中关于数据库分页查询操作的方法:

Smile中主通过实现接口 org.smile.db.sql.page. DialectPage 来进行提供数据库分页查询功能,smile已经实现了常用数据库的分页接口 ,接口代码如:

package org.smile.db.sql.page;
/**
* 方言分页语句接口
* @author strive
*
*/
public interface DialectPage {
/**
* 总条数语句
* @return
*/
public String getCountSql();
/**
* 数据库句
* @return
*/
public String getDataSql(int page,int size);
}

在 smile-1.0.jar中对接口提供了五种实现,分别如下:

[list]
[*]MySQLDialectPage 适用于mysql数据库
[*]OracleDialectPage 适用于oracle数据库
[*]RowNumberDialectPage 适用于 row_number() 函数的数据库 如 sql2005以上版本、DB2、APACHE_DERBY 等数据库
[*]SQL2000DialectPage 适用于 sql2000以上版本
[*]SQLServerDialectPage 适用于 sql2005以上版本
[/list]


分页查询的结果是一个封闭了数据与分页信息的对象:
package org.smile.db;


import java.util.List;
/**
* 分页数据
* @author strive
*
*/
public class PageModel {

/**
* 数据
*/
private List rows;
/**
* 总条娄
*/
private long total;
/**
* 一页条数
*/
private int size=20;
/**
* 当前页
*/
private int page;

/**
* 总页数
*/
private long totalPages;

public List getRows() {
return rows;
}
public void setRows(List rows) {
this.rows = rows;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public long getTotalPages() {
return totalPages;
}
public void setTotalPages(long totalPages) {
this.totalPages = totalPages;
}
/**
* 重写toString
*/
public String toString(){
StringBuffer str=new StringBuffer("[page="+page+",size="+size+",totalPages="+totalPages);
str.append(",total="+total+",rows="+rows+"]");
return str.toString();
}
}


一、使用countSql,dataSql分页,这是底层的方法,使用于没有实现接口的数据库类型:

SQLRunner runner=new SQLRunner(conn);
PageModel pageModel=runner.queryPageSQL(countSql, dataSql, page, size);

二、自定义实现接口方法调用,使用于没有实现接口的数据库类型.
Connection conn=DbManager.getConnection();
PageModel pageModel=runner.queryPageSQL(dialectPage, page, size) ;


dialectPage 为实现DialectPage 接口的对象。

三、使用smile中定义好的分页方言接口进行分页查询:

1、指定方言分页接口的实现类对象,进行分页查询:
SQLRunner runner=new SQLRunner(conn);
String sql="select * from test where name like ? ";
try {
//mysql
PageModel pageModel=runner.queryPageSQL(new MySQLDialectPage(sql), new Object[]{"%胡%"}, 2, 20);
}finally{
runner.closeConn();
}



2、可以使用指定方言的形式进行分页查询:
Smile中的预定义方言只有:
 /**
* ORACLE数据库
*/
public static final int ORACLE=0;
/**
* sqlserver 2000以上版本
*/
public static final int SQLSERVER2000=1;
/**
* sqlserver 2005以上版本
*/
public static final int SQLSERVER2005=2;
/**
* mysql 数据库
*/
public static final int MYSQL=3;
/**
* hsql
*/
public static final int HSQL=4;
/**
* db2数据库
*/
public static final int DB2=5;

public static final int APACHE_DERBY=6;



SQLRunner runner=new SQLRunner(conn,new ArrayRowHandler());
//设置方言为sql2005 如不设置 默认为oralce方言
runner.setDbDialect(Dialect.SQLSERVER2005);
String sql="select * from test where name like ? ";
try {
//这样也可以对sql2005以上版本的数据库分页
PageModel pageModel=runner.queryPageSQL(sql, new Object[]{"%胡%"}, 2, 20);
}finally{
runner.closeConn();
}


【注】如不是预定义的方言数据库那那就只能使用指定接口的方式进行分页查询。

【smile-1.0.jar下载】[url]http://hzs0502030128.iteye.com/blog/1471505[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值