hibernate辅助类含分页
package com.cy.utils; import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry; /**
* Hibernate辅助类
*
* @author renchang
*
*/
public class HibernateUtils { private static Configuration config; // 配置对象
private static ServiceRegistry ser; // 服务
private static SessionFactory sf; // session工厂
private static Session session; // session
private static Transaction transaction; // 事务 /**
* 1.读取配置到Configuration 2.注册服务 3.获得SessionFactory
*/
static {
config = new Configuration().configure();
ser = new StandardServiceRegistryBuilder().applySettings(
config.getProperties()).build();
sf = config.buildSessionFactory(ser);
} /**
* 获得Session
*
* @return session对象
*/
public static Session getSession() {
return session = sf.openSession();
} /**
* 获得事务对象
*
* @return Transaction对象
*/
public static Transaction getTransaction() {
return transaction = session.beginTransaction();
} /**
* 关闭资源
*/
public static void close() {
try {
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
} /**
* 添加新数据
*
* @param obj
* 待添加的对象
*/
public static void save(Object obj) {
try {
getSession();
getTransaction();
session.save(obj);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
close();
}
} /**
* 修改数据
*
* @param obj
* 待修改的对象
*/
public static void update(Object obj) {
try {
getSession();
getTransaction();
session.update(obj);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
close();
}
} /**
* 添删除数据
*
* @param obj
* 待删除的对象
*/
public static void delete(Object obj) {
try {
getSession();
getTransaction();
session.delete(obj);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
close();
}
} /**
* 按条件插叙数据
*
* @param hql
* 插叙的hql语句
* @param whereMap
* 插叙条件的键值对
* @return 满足条件的对象集合
*/
public static List<?> find(String hql, Map<String, Object> whereMap) {
List<?> objList = null;
try {
getSession();
getTransaction();
getTransaction();
hql = setHql(hql, whereMap);
Query query = session.createQuery(hql);
objList = query.list();
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
close();
}
return objList;
} /**
* 根据id获得对象信息
*
* @param cls
* 对象z
* @param id
* id
* @return 对象
*/
public static Object getObjById(Class<?> cls, Serializable id) {
Object obj = null;
try {
getSession();
getTransaction();
obj = session.get(cls, id);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
close();
}
return obj;
} /**
* 分页
*
* @param hql
* 分页语句
* @param pageSize
* 每页大小
* @param pageNo
* 当前页数
* @param whereMap
* 分页条件
* @return 满足条件的数据
*/
public static List<?> paging(String hql, int pageSize, int pageNo,
Map<String, Object> whereMap) {
List<?> objList = null;
try {
getSession();
getTransaction();
getTransaction();
hql = setHql(hql, whereMap);
Query query = session.createQuery(hql);
int beginRow = (pageNo - 1) * pageSize;
query.setFirstResult(beginRow);
query.setMaxResults(pageSize);
objList = query.list();
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
} finally {
close();
}
return objList;
} /**
* 获得条件下总条数
*
* @param hql
* hql语句
* @param whereMap
* 统计的总条数
* @return 总条数
*/
public static int getTotalRows(String hql, Map<String, Object> whereMap) {
int totalRows = 0;
try {
getSession();
getTransaction();
hql = setHql(hql, whereMap);
Query query = session.createQuery(hql);
totalRows = (new Integer(query.uniqueResult().toString()))
.intValue();
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return totalRows;
} /**
* 拼接hql语句
*
* @param hql
* 原始hql语句
* @param whereMap
* 拼接的条件
* @return 拼接后的hql
*/
private static String setHql(String hql, Map<String, Object> whereMap) {
StringBuffer sbHql = new StringBuffer(hql);
if (whereMap != null) {
Set<String> set = whereMap.keySet();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String key = it.next();
sbHql.append(" AND " + key + " LIKE '%" + whereMap.get(key)
+ "%'");
}
}
return sbHql.toString();
}
}
hibernate辅助类含分页的更多相关文章
- Hibernate-ORM:10.Hibernate中的分页
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述Hibernate中的分页 hibernate中的分页其实很好写,它通过操作对象的方式,来进行分页 ...
- Easyui的datagrid结合hibernate实现数据分页
最近在学习easyui的使用,在学到datagrid的时候遇到了一些问题,终于抽点时间整理了一下,分享出来,请各位前辈高手多多指教! 1.先来看看效果,二话不说,上图直观! 2.easyui的data ...
- SpringMVC+Spring+hibernate整合及分页
1. 新建web project 2. 引入jar, 3. 创建包com.tgb.web.controller, 下面创建包(dao,entity,service, config,spring,hib ...
- hibernate+pageBean实现分页dao层功能代码
今天闲来无事,摆弄了一下分页,突然发现很多代码长时间不用就生梳了,虽然有些基础,但没有一篇整合的.这里还是简单示例,主要是以后自己翻着看不用百度找啊找找不到一篇想要的 1.PageBean实体类,一页 ...
- Hibernate和Struts分页查询
分页查询数据库方法 /** * 分页查询方法 * @param sql,pageNO,maxResult * @return List */ public List<Object> que ...
- Java_Web三大框架之Hibernate+jsp+HQL分页查询
分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...
- MyBatis之四:调用存储过程含分页、输入输出参数
在前面分别讲解了通过mybatis执行简单的增删改,多表联合查询,那么自然不能缺少存储过程调用,而且还带分页功能. 注意:表结构参见上篇讲解联合查询的表. 一.查询某班级以及该班级下面所有学生的记录 ...
- SSH搭建完美CURD,含分页算法
今日开始研究使用java平台上的框架解决web服务端的开发. 这是一个完整的SSH实例,在马士兵老师的SSH整合代码基础上,增加用户的增删改查,同时实现structs方式的分页 放出源代码供大家学习参 ...
- 一个操作oracle的c#类 含分页
有别于以前的一个OracleHelper,这个版各有所长,MARK下. using System; using System.Data; using System.Data.OracleClient; ...
随机推荐
- Android 百度云推送
http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/sdk/clientsdk. public class DemoAppl ...
- 基于FPGA的I2C读写EEPROM
I2C在芯片的配置中应用还是很多的,比如摄像头.VGA转HDMI转换芯片,之前博主分享过一篇I2C协议的基础学习IIC协议学习笔记,这篇就使用Verilog来实现EEPROM的读写,进行一个简单的I2 ...
- poj 3013 最短路变形
http://poj.org/problem?id=3013 给出n个点,m个边.给出每个点的权值,每个边的权值.在m条边中选n-1条边使这n个点成为一棵树,root=1,求这棵树的最小费用,费用=树 ...
- input和raw_input
Python2.X使用raw_input() Python3.X废弃了raw_input()函数,使用input()函数替代它 code: data=input("please input ...
- MVC和WEBAPI(一)
什么是MVC (模型 视图 控制器)? MVC是一个架构模式,它分离了表现与交互.它被分为三个核心部件:模型.视图.控制器.下面是每一个部件的分工: 视图是用户看到并与之交互的界面. 模型表示业务数据 ...
- JQuery Mobile - 解决页面点击时候,页眉和页脚消失问题!
当点击页面时候,页眉和页脚会消失!解决方法,在页面和页脚中加入: data-quicklinks="true" 实际使用代码: <div data-role="pa ...
- IO模型 IO多路复用
阻塞IO 用socket 一定会用到accept recv recvfrom这些方法正常情况下 accept recv recvfrom都是阻塞的 非阻塞IO 如果setblocking(False) ...
- 【文文殿下】WC2019游记
Day0 今天早上三点半才睡着,五点起床,前往省城郑州.与省实验常老师汇合,坐上高铁,下午三点半多才到广州二中. 下午随便找了一个教室进去敲一敲代码,发现自己越来越菜了. 和一大堆网上的dalao面基 ...
- C++获取系统信息(IP地址、硬件信息等)
#include<stdio.h> #include<winsock2.h> //该头文件需在windows.h之前 #include<windows.h> #in ...
- PHP中eval函数的危害与正确禁用方法
其实 eval()是无法用php.ini中的 disable_functions禁止掉的 :eval是zend的,因此不是PHP_FUNCTION 函数: 如果想禁掉eval可以用php的扩展 Suh ...