Hibernate常用增删改查方法
/**
	 * @param obj
	 * @return
	 * 添加数据
	 */
	public Serializable saveObject(Object obj){
		return this.getHibernateTemplate().save(obj);
	}
/**
	 * @param obj
	 * 修改数据
	 */
	public void uodateObject(Object obj){
		this.getHibernateTemplate().update(obj);
	}
/**
* 物理删除数据
*/
	public void deleteObject(Object obj){
		this.getHibernateTemplate().delete(obj);
}
/**
	 * @param obj
	 * 有id号就会看作为修改数据集,没有就会看作为添加数据
	 */
	public void saveOrUpdate(Object obj){
		this.getHibernateTemplate().saveOrUpdate(obj);
	}
/**
	 * @param cls
	 * @param id
	 * @return 当对象的为空的时候用get方法去查询返回null
	 */
	public Object get(Class cls,Serializable id){
		return this.getHibernateTemplate().get(cls, id);
	}
	/**
	 * @param cls
	 * @param id
	 * @return 当查询对象为空的时候就会报异常(这个方法一开始就认为一定有数据)
	 */
	public Object load(Class cls,Serializable id){
		return this.getHibernateTemplate().load(cls, id);
	}
	/**
	 * @param cls
	 * @return
	 * 查询所有
	 */
	public List loadAll(Class cls){
		return this.getHibernateTemplate().loadAll(cls);
	}
/**
	 * @param hql
	 * @param params
	 * @return
	 * 代条件查询
	 */
	public List findByHql(String hql,Object[] params){
		return this.getHibernateTemplate().find(hql,params);
	}
/**
	 * @param sql
	 * @param params
	 * @return
	 */
	public List findBySql(final String sql,final Object[] params){
		return this.getHibernateTemplate().executeFind(new HibernateCallback() {
			@Override
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
					SQLQuery query=session.createSQLQuery(sql);
					if(params!=null&& params.length>0){
						for(int i=0;i<params.length;i++){
							Object object=params[i];
							query.setParameter(i,object);
						}
					}
				return query.list();
			}
		});
	}
/**
	 * @param sql
	 *sql 删除/修改 数据
	 */
	public void deleteSql(final String sql){
		try {
			this.getHibernateTemplate().execute(new HibernateCallback() {
@Override
				public Object doInHibernate(Session session) throws HibernateException,
						SQLException {
					SQLQuery query=session.createSQLQuery(sql);
					return query.executeUpdate();
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
/**
	 * @param sql
	 * 原始更改数据回滚和提交数据(spring事物配置取代)
	 */
	public void UpdateInfo(String sql){
		Session session =null;
		Transaction tx=null;
		try {
			session=this.getHibernateTemplate().getSessionFactory().openSession();
			tx=session.beginTransaction();
			tx.commit();
		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
		}finally{
			if(session!=null) session.close();
		}
	}
/**
	 * @param hql
	 * @param pager
	 * @return hql分页查询结果集
	 */
	public List allHqlList(String hql,Pager pager){
		return this.getSession().createQuery(hql).setFirstResult((pager.getCurrentPage() -1)*pager.getPageSize()).setMaxResults(pager.getPageSize()).list();
	}
/**
	 * @param sql
	 * @param pager
	 * @return sql分页查询结果集
	 */
	public List allSqlList(String sql,Pager pager){
		return this.getSession().createSQLQuery(sql).setFirstResult((pager.getCurrentPage()-1)*pager.getPageSize()).setMaxResults(pager.getPageSize()).list();
	}
/**
	 * @param hql
	 * @return 拿到查询语句的数据总数
	 */
	public Integer totleSize(String hql){
		int str=hql.indexOf("from");
		hql="select count(*) "+hql.substring(str,hql.length());
		return (Integer)this.getSession().createQuery(hql).uniqueResult();
	}
/**
	 * @param hql
	 * @param pager
	 * @return 填充pager对象信息
	 */
	public Pager queryPager(String hql,Pager pager){
		int maxpage,currentPage=0;
		int totelSize=this.totleSize(hql);
		pager.setTotalRows(totelSize);//总过信息条数
		currentPage=pager.getCurrentPage()==0 ? 1:pager.getCurrentPage();
		pager.setCurrentPage(currentPage);
		//显示页数
		if(totelSize%pager.getPageSize()==0) maxpage=totelSize/pager.getPageSize();
		else maxpage=totelSize/pager.getPageSize()+1;
		pager.setTotalPages(maxpage);//最大页数
		pager.setResults(this.allHqlList(hql, pager));
		return pager;
	}
/**
	 * 批量更新/删除(Bulk update/delete)
	     public void batchDelete(String name, String newName) {  
    	 this.hibernateTemplate.bulkUpdate("update Teacher set name=? where name=?", new Object[]{newName, name});  
	 */
	public void bulkUpdate(String queryString,Object[] objs){
		try {
			this.getHibernateTemplate().bulkUpdate(queryString,objs);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
//查询语句
	//select b from book b left join fetch b.autohr where b.id=148;
	//select b from Author a left join fethc a.books;
	//select a.name,count(b)  from Author a left join a.books b group by a.id order by count(b) desc;
	//select a from Author a where a.id in (select b.author.id form Book b where b.name like '%a%');
/**
	 * @param list
	 * @return
	 * 把集合当作查询条件
	 */
	public List queryList1(List list){
		String  hql="from Book where id in(:ids)";
		return getSession().createQuery(hql).setParameterList("ids", list).list();
	}
/**
	 * @return
	 * 占位符修改数据
	 */
	public List queryList2(){
		String hql = "update Book set name=? where id=?";
		return getSession().createQuery(hql)
		.setParameter(0, "hibernate")
		.setParameter(1, 109)
		.list();
	}
//以下是分页Pager对象属性
public class Pager<E> {
	private int totalRows=0;//总行数数
	private int pageSize=25;//每页显示多少条
	private int currentPage=1;//当前页数
	private int totalPages=0;//最大页数
	private List<E> results;//查询结果集
	public int getTotalRows() {
		return totalRows;
	}
	public void setTotalRows(int totalRows) {
		this.totalRows = totalRows;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}
	public int getTotalPages() {
		return totalPages;
	}
	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}
	public List<E> getResults() {
		return results;
	}
	public void setResults(List<E> results) {
		this.results = results;
	}
}
Hibernate常用增删改查方法的更多相关文章
- Spring Data CrudRepository增删改查方法(八)
		
CrudRepository 的主要方法 long count(); boolean exists(Integer arg0); <S extends StudentPO> S sav ...
 - Django REST framework 五种增删改查方法
		
Django-DRF-视图的演变 版本一(基于类视图APIView类) views.py: APIView是继承的Django View视图的. 1 from .serializers impor ...
 - 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)
		
SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...
 - 通用mapper的增删改查方法   留存  备忘
		
Mybatis通用Mapper介绍与使用 前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQ ...
 - hibernate实现增删改查的各种方法
		
1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记 ...
 - Hibernate全套增删改查+分页
		
1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...
 - EasyUI + Spring MVC + hibernate实现增删改查导入导出
		
(这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...
 - Hibernate基础增删改查语法
		
1.创建好Hibernate项目,创建好实体类和测试类,如果不会创建Hibernate项目的同学,点此处:http://www.cnblogs.com/zhaojinyan/p/9336174.htm ...
 - Hibernate的增删改查
		
一.搭建Hibernate开发环境,这里就不说了,直接说环境搭好后的事情. 二.项目的目录结构
 
随机推荐
- Unity2D 之 Sprite点击事件
			
以下方法纯属我YY,切勿当真!!! 给 Sprite添加点击事件步骤: 1. 创建一个 Sprite 2. 给Sprite添加一个 Box Collider 2D 3. 将如果脚本放到Sprite上: ...
 - 对于c语言int类型和float,以及double类型表示范围的计算
			
首先说一下我原来错误的认识 int是32个bit, 如果我们把第一位理解为符号位,那么很显然int的范围是-(2^31-1)~2^31-1 但是实际上我们都知道int的最小值是-2^31次.. 为什么 ...
 - AchartEngine的柱状图属性设置
			
1. 修改背景色或设置背景图片 背景色设置需要设置两项:setMarginsColor(设置四边颜色)以及setBackgroundColor(设置中间背景色) 设置背景图片: ...
 - python 多重继承
			
多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承. 多重继承的继承链就不是一棵树了,它像这样: class A(object): def __init__(self, a) ...
 - nodejs随记01
			
EventEmitter var stream = require('stream'); var Readable = stream.Readable; //写入类(http-req就是),初始化时会 ...
 - PyCharm默认快捷键
			
转自:http://www.2cto.com/os/201410/341542.html 1.编辑(Editing)Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + ...
 - Android实现全屏的三种方式
			
一.通过代码 requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题栏 getWindow().setFlags(WindowManager.Lay ...
 - three.js入门2
			
新建一个html文件 <!DOCTYPE html> <html> <head> <title></title> <style> ...
 - tomcat与HTML命令提示符
			
在tomcatwebapps目录下建立一个新文件夹 命名为my 把第一个学习的HTML文件放到my文件夹内 通过tomcat服务器远程访问该网页 把localhost换成自己的IP地址 先查看自己的I ...
 - ural 2062 Ambitious Experiment
			
2062. Ambitious Experiment Time limit: 3.0 secondMemory limit: 128 MB During several decades, scient ...