`

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

阅读更多
                   smile开发类库——SQLRunner分页查询数据库

本篇文章来介绍下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中对接口提供了五种实现,分别如下:

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



分页查询的结果是一个封闭了数据与分页信息的对象:
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下载】http://hzs0502030128.iteye.com/blog/1471505
分享到:
评论

相关推荐

    基于自注意力孪生神经网络的人脸识别——在家族人脸数据库上的亲属关系预测.pdf

    在美国西北大学的 SMILE 人脸数据集上进行训练,并在官方于 Kaggle 举办的基于人脸亲属关系识别数据竞赛中进入前十名。 本文提出的基于自注意力孪生神经网络的人脸识别方法可以应用于亲属关系预测任务中,提高模型...

    smile1.0_src

    查询数据 SQLRunner Query 分页查询 二、数据源的实现 DbManager BasicDataSource 三 、JSON操作 JSONValue JSONObject JSONArray 四、 jstl 函数 标签库 五、 jsongateway 框架 六、正则表达式 ...

    一个C#写的类库及调用例子

    标题和描述中提到的"一个C#写的类库及调用例子"是一个关于C#编程的实践项目,其中包含了一个类库以及如何使用这个类库的示例代码。C#是一种面向对象的编程语言,广泛应用于开发Windows桌面应用、Web应用、游戏以及...

    Smile参考文献生成工具

    此外,Smile参考文献生成工具还具备智能化的特点,它能够自动识别在线数据库中的文献信息,例如PubMed、Google Scholar等,进一步简化了获取和整理参考文献的过程。同时,该工具允许用户自定义模板,以适应特定的...

    smile一个快速而全面的机器学习系统

    Smile采用Java语言开发,这使得它具有跨平台的特性,并且能够无缝集成到Java生态系统中。 在机器学习领域,Smile涵盖了多种算法,包括监督学习和无监督学习。在监督学习方面,它提供了常见的分类和回归算法,如逻辑...

    C#.NET万能数据库访问封装类ACCESS、SQLServer、Oracle

    这个类库的目标是提供一个统一的接口,以便在不同数据库系统间无缝切换。 首先,我们来看C#.NET中的ADO.NET框架,它是.NET Framework中用于数据库访问的基础。ADO.NET包括DataSet、DataTable、DataRow等组件,以及...

    如何完整的修改一个数据库的名称

    "数据库名称修改" 数据库名称修改是数据库管理的重要步骤之一。以下是关于数据库名称修改的详细知识点: 一、数据库名称修改的必要性 在数据库管理中,数据库名称的修改是非常重要的。数据库名称的修改可以满足...

    sql 数据库的全套学习课件

    理解如何读取和分析执行计划,以及如何使用索引、视图、存储过程等技术来改进查询性能,是数据库开发人员的必备技能。 5. **SQL语言**:SQL(结构化查询语言)是与数据库交互的标准语言。掌握SELECT语句用于数据...

    Qt应用程序连接access数据库

    在本文中,我们将深入探讨如何使用Qt框架来连接并操作Access数据库,以便进行数据转换。Qt是一个跨平台的C++库,提供了丰富的功能,包括GUI设计、网络编程以及数据库访问等。而Microsoft Access则是一种流行的桌面...

    微信表情数据库表

    在IT行业中,数据库是存储和管理数据的核心工具,而微信表情数据库表则是一个特定的应用场景,主要用于处理和存储用户...在实际开发中,这样的数据库设计思路和操作方法可以借鉴到其他需要处理大量多媒体数据的项目中。

    C#编程修复Access数据库

    它支持创建表、查询、报表和宏等数据库对象,并提供了图形用户界面(GUI)供用户交互。Access数据库以.MDB或.ACCDB为扩展名,其中.MDB用于较旧版本,.ACCDB用于新版本。 当Access数据库出现问题时,可能表现为无法...

    图书管理系统 数据库课程设计

    事件驱动编程是其核心,如按钮点击事件可以触发数据库查询或更新操作。 5. **用户界面设计**:一个简洁实用的界面是提升用户体验的关键。VB提供了丰富的控件(如文本框、列表框、按钮等)来构建界面,同时还需要...

    我的smile头像

    "我的smile头像"这个主题表明我们正在探讨的是一个与笑脸相关的个人头像设计,这通常涉及到图形设计、用户体验(UX)以及品牌识别等多方面的知识。 首先,我们需要理解"smile"在设计中的含义。微笑是人类情感表达的...

    haarcascade-smile.xml.zip

    标题中的"haarcascade-smile.xml.zip"是一个与计算机视觉相关的压缩文件,它包含了OpenCV库用到的级联分类器(Haar Cascade)配置文件。OpenCV是一个开源的计算机视觉和机器学习库,广泛应用于图像处理和模式识别...

    JAVA 登陆注册银行业务模拟数据库操作

    在本项目"JAVA 登陆注册银行业务...总的来说,这个项目涵盖了基础的Java编程、数据库操作、用户认证、事务处理和安全实践等多个方面,对于学习和实践Java Web开发,尤其是银行系统的业务逻辑,是非常有价值的实践案例。

    jackson-dataformat-smile-2.10.0-API文档-中文版.zip

    赠送jar包:jackson-dataformat-smile-2.10.0.jar; 赠送原API文档:jackson-dataformat-smile-2.10.0-javadoc.jar; 赠送源代码:jackson-dataformat-smile-2.10.0-sources.jar; 赠送Maven依赖信息文件:jackson-...

    成语数据库(总共31851个成语,含拼音,解释,出处,例子)

    《成语数据库:全面解析与应用》 成语,作为中华文化瑰宝中的重要组成部分,承载着丰富的历史故事、哲学思想和生活智慧。本资源提供了一个包含31851个成语的数据库,涵盖了成语的拼音、解释,大部分还附带了出处和...

    数据库同步工具(不同类型数据库之间的数据同步)

    “数据库数据同步工具”是一套适合数据库数据管理者和软件开发者的工具软件,从用户的需要出发,为用户需要而设计。软件界面友好,操作简便,能够使用户非常有效和方便的对数据库数据进行管理。 软件主要功能是支持...

    jackson-dataformat-smile/yam-2.11.4.jar

    jackson-dataformat-smile-2.11.4.jar jackson-dataformat-yam-2.11.4.jar 这俩jar包在服务运行的时候显示读取失败,拷贝到自己的maven仓库的 \com\fasterxml\jackson\dataformat\jackson-dataformat-smile\2.11.4 ...

    机器学习算法Java库smile.zip

    SmileMiner是一个包含各种现有的机器学习算法的Java库。主要组件包括:mile 机器学习的核心库SmileMath 数学函数、排序、随机数生成器、最优化、线性代数、统计分布、假设检验SmileData Parsers for ... 标签:smile

Global site tag (gtag.js) - Google Analytics