`
hz_chenwenbiao
  • 浏览: 996307 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate分页转换为sql命令

阅读更多

使用hibernate进行分页,设置起始记录数和记录条数:

 

if (limit > 0) {
				c.setFirstResult(start);
				c.setMaxResults(limit);
			}

执行查询后转换为sql语句分为两种情况,第一种是当起始位置为0时,那么会使用top方式:

 

select top ? this_.POSTID as POSTID23_3_, this_.cityPK as cityPK23_3_, this_.content as content23_3_, this_.countryPK as countryPK23_3_, this_.createtime as createtime23_3_, this_.ip as ip23_3_, this_.lastmodtime as lastmodt7_23_3_, this_.OBJECTPK as OBJECTPK23_3_, this_.parentid as parentid23_3_, this_.provincePK as provincePK23_3_, this_.recommended as recomme10_23_3_, this_.replyCount as replyCount23_3_, this_.SERVERNODEID as SERVERN12_23_3_, this_.title as title23_3_, this_.townPK as townPK23_3_, this_.USERPK as USERPK23_3_, this_.viliagePK as viliagePK23_3_, obj2_.OBJECTPK as OBJECTPK0_0_, obj2_.addDate as addDate0_0_, obj2_.currVisitCount as currVisi3_0_0_, obj2_.depth as depth0_0_, obj2_.description as descript5_0_0_, obj2_.historyVisitCount as historyV6_0_0_, obj2_.objectID as objectID0_0_, obj2_.objectType as objectType0_0_, obj2_.PARENTPK as PARENTPK0_0_, obj2_.password as password0_0_, obj2_.popular as popular0_0_, obj2_.postID as postID0_0_, obj2_.recommended as recomme12_0_0_, obj2_.ROOTPK as ROOTPK0_0_, obj2_.serverNodeID as serverN13_0_0_, obj2_.status as status0_0_, obj2_.updateDate as updateDate0_0_, obj2_.USERPK as USERPK0_0_, user3_.USERPK as USERPK6_1_, user3_.addDate as addDate6_1_, user3_.address as address6_1_, user3_.OBJECTPK as OBJECTPK6_1_, user3_.answer as answer6_1_, user3_.CONFIG as CONFIG6_1_, user3_.description as descript6_6_1_, user3_.EMAIL as EMAIL6_1_, user3_.OCCUPATION as OCCUPATION6_1_, user3_.PASSWORD as PASSWORD6_1_, user3_.PHOTO as PHOTO6_1_, user3_.plainpasswd as plainpa11_6_1_, user3_.question as question6_1_, user3_.SERVERNODEID as SERVERN13_6_1_, user3_.SEX as SEX6_1_, user3_.STATUS as STATUS6_1_, user3_.tel as tel6_1_, user3_.USERID as USERID6_1_, user3_.USERNAME as USERNAME6_1_, user3_.userType as userType6_1_, user4_.USERPK as USERPK6_2_, user4_.addDate as addDate6_2_, user4_.address as address6_2_, user4_.OBJECTPK as OBJECTPK6_2_, user4_.answer as answer6_2_, user4_.CONFIG as CONFIG6_2_, user4_.description as descript6_6_2_, user4_.EMAIL as EMAIL6_2_, user4_.OCCUPATION as OCCUPATION6_2_, user4_.PASSWORD as PASSWORD6_2_, user4_.PHOTO as PHOTO6_2_, user4_.plainpasswd as plainpa11_6_2_, user4_.question as question6_2_, user4_.SERVERNODEID as SERVERN13_6_2_, user4_.SEX as SEX6_2_, user4_.STATUS as STATUS6_2_, user4_.tel as tel6_2_, user4_.USERID as USERID6_2_, user4_.USERNAME as USERNAME6_2_, user4_.userType as userType6_2_ 
from POSTS this_ 
inner join OBJECTS obj2_ on this_.OBJECTPK=obj2_.OBJECTPK 
left outer join USERS user3_ on obj2_.USERPK=user3_.USERPK 
inner join USERS user4_ on this_.USERPK=user4_.USERPK 
where this_.parentid=? and this_.recommended<>? and (this_.OBJECTPK=? or this_.OBJECTPK=?) 
order by this_.POSTID desc

上面显示一堆信息,其它它们的关系,我们可以不看,就看它实现的方式,这里是使用了top方式来进行查询的。

 

第二种情况是起始位置不为0的时候,那么会使用limit方式进行查询:

select limit ? ? this_.POSTID as POSTID23_3_, this_.cityPK as cityPK23_3_, this_.content as content23_3_, this_.countryPK as countryPK23_3_, this_.createtime as createtime23_3_, this_.ip as ip23_3_, this_.lastmodtime as lastmodt7_23_3_, this_.OBJECTPK as OBJECTPK23_3_, this_.parentid as parentid23_3_, this_.provincePK as provincePK23_3_, this_.recommended as recomme10_23_3_, this_.replyCount as replyCount23_3_, this_.SERVERNODEID as SERVERN12_23_3_, this_.title as title23_3_, this_.townPK as townPK23_3_, this_.USERPK as USERPK23_3_, this_.viliagePK as viliagePK23_3_, obj2_.OBJECTPK as OBJECTPK0_0_, obj2_.addDate as addDate0_0_, obj2_.currVisitCount as currVisi3_0_0_, obj2_.depth as depth0_0_, obj2_.description as descript5_0_0_, obj2_.historyVisitCount as historyV6_0_0_, obj2_.objectID as objectID0_0_, obj2_.objectType as objectType0_0_, obj2_.PARENTPK as PARENTPK0_0_, obj2_.password as password0_0_, obj2_.popular as popular0_0_, obj2_.postID as postID0_0_, obj2_.recommended as recomme12_0_0_, obj2_.ROOTPK as ROOTPK0_0_, obj2_.serverNodeID as serverN13_0_0_, obj2_.status as status0_0_, obj2_.updateDate as updateDate0_0_, obj2_.USERPK as USERPK0_0_, user3_.USERPK as USERPK6_1_, user3_.addDate as addDate6_1_, user3_.address as address6_1_, user3_.OBJECTPK as OBJECTPK6_1_, user3_.answer as answer6_1_, user3_.CONFIG as CONFIG6_1_, user3_.description as descript6_6_1_, user3_.EMAIL as EMAIL6_1_, user3_.OCCUPATION as OCCUPATION6_1_, user3_.PASSWORD as PASSWORD6_1_, user3_.PHOTO as PHOTO6_1_, user3_.plainpasswd as plainpa11_6_1_, user3_.question as question6_1_, user3_.SERVERNODEID as SERVERN13_6_1_, user3_.SEX as SEX6_1_, user3_.STATUS as STATUS6_1_, user3_.tel as tel6_1_, user3_.USERID as USERID6_1_, user3_.USERNAME as USERNAME6_1_, user3_.userType as userType6_1_, user4_.USERPK as USERPK6_2_, user4_.addDate as addDate6_2_, user4_.address as address6_2_, user4_.OBJECTPK as OBJECTPK6_2_, user4_.answer as answer6_2_, user4_.CONFIG as CONFIG6_2_, user4_.description as descript6_6_2_, user4_.EMAIL as EMAIL6_2_, user4_.OCCUPATION as OCCUPATION6_2_, user4_.PASSWORD as PASSWORD6_2_, user4_.PHOTO as PHOTO6_2_, user4_.plainpasswd as plainpa11_6_2_, user4_.question as question6_2_, user4_.SERVERNODEID as SERVERN13_6_2_, user4_.SEX as SEX6_2_, user4_.STATUS as STATUS6_2_, user4_.tel as tel6_2_, user4_.USERID as USERID6_2_, user4_.USERNAME as USERNAME6_2_, user4_.userType as userType6_2_ 
from POSTS this_ 
inner join OBJECTS obj2_ on this_.OBJECTPK=obj2_.OBJECTPK 
left outer join USERS user3_ on obj2_.USERPK=user3_.USERPK 
inner join USERS user4_ on this_.USERPK=user4_.USERPK 
where this_.parentid=? and this_.recommended<>? and (this_.OBJECTPK=? or this_.OBJECTPK=?) 
order by this_.POSTID desc
 

 

limit和top应该不是标准的sql命令,再转:

 

 

做分页效果时发现一直不能成功,最后发现问题在top * N from tablename这条语句上。在mysql中select top用法和ms sqlserver有所区别。

若在mysql中实现select top功能得用:select * from tablename limit M,N

这里M表示从(M+1)条记录开始,N表示返回的记录条数。

 

分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    java+ext网吧管理系统源代码,使用hibernate,包括数据库

    java+ext做的网吧管理系统源代码,使用hibernate,包括数据库(sql server2005) 使用json数据转换,dwr框架 整个系统只用到一个jsp页面,其他全部用js完成 包括用户管理,会员管理,充值,积分,系统管理等 上机,下机...

    sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring)

    Java真正智慧的ORM框架,除具有JPA功能外,具有最佳的sql编写模式、独创的缓存翻译、最优化的分页、并提供分组汇总、同比环比、行列转换、树形排序汇总、多数据库适配(oracle\mysql\sqlserver\postgresql\sqlite\db2...

    基于spring,struts(struts2),hibernate的web项目脚手架

    内置一个基于数据库的代码生成器rapid-generator,极易进行二次开发 struts1,struts2的零配置 spring集成及加强,自动搜索hibernate的entity annotation class 集成动态构造sql的工具:rapid-xsqlbuilder 集成...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    sqltoy-orm框架系统-其他

    sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从...

    Java常见面试题208道.docx

    115.hibernate 中如何在控制台查看打印的 sql 语句? 116.hibernate 有几种查询方式? 117.hibernate 实体类可以被定义为 final 吗? 118.在 hibernate 中使用 Integer 和 int 做映射有什么区别? 119.hibernate 是...

    spring-jdbc-orm:基于spring-jdbc 写的一个小型ORM

    二是自动生成增/删/改/查以及分页查询sql语句,使用了此工具后基础的语句就不必在费尽心思copy 改了。绝对会提高效率,让你的工作重心放在业务上。技术实现此小工具运用了注解和反射,其中在设计上运用了一些设计...

    Spring.3.x企业应用开发实战(完整版).part2

    1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello ...

    Spring3.x企业应用开发实战(完整版) part1

    1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello ...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题57.hibernate对象状态及其转换 Java面试题58:hibernate的缓存 Java面试题59.webservice的使用场景 Java面试题60.activiti的简单介绍 Java面试题61.linux的使用场景 Java面试题62.linux常用命令 Java面试...

    Java学习笔记-个人整理的

    {4.14}数组转换为集合}{89}{section.4.14} {4.15}Map的迭代}{90}{section.4.15} {4.15.1}字符统计}{91}{subsection.4.15.1} {5}格式化输入输出}{94}{chapter.5} {5.1}时间与日期}{94}{section.5.1} {5.1.1}...

    JAVA程序开发大全---上半部分

    本书系统全面地介绍了Java中的各项主流技术,以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、...

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

    xmljava系统源码-memory:超轻量级Java持久化工具:比dbutils更小巧、好用的的持久化工具,支持Oracle&MYSQL

    xml java系统源码 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具 1. 概述 1.1 连接、语句和结果集  从上看,其对数据访问层有相当简洁的抽象:1、连接... 获取结果集,就是把ResultSet转换为目标数

    最新Java面试宝典pdf版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试宝典2010版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

Global site tag (gtag.js) - Google Analytics