⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 useroper.java

📁 hibernate源代码使用 J2EE项目开发
💻 JAVA
字号:
package com.data.oper;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;

import com.data.model.User;
import com.utils.HibernateUtil;

public class UserOper {

	private Logger log = Logger.getLogger(UserOper.class);
	private int pageSize = 3;
	
	public void add(User u){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return;
		}
		//只有放在事务中才能反映到数据库中
		System.out.print("UserOper"+  u);
		Transaction tx = session.beginTransaction();
		session.save(u);
		tx.commit();
		
		HibernateUtil.closeSession();
	}
	
	//该对象至少需要包含关键字值
	public void delete(User u){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return;
		}
		Transaction tx = session.beginTransaction();
		session.delete(u);
		tx.commit();
		
		HibernateUtil.closeSession();
	}
	
	public void delete(int id){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return;
		}
		//1)类名要写完整包路径?不一定,写不写都可以的,但大小写是敏感的
		//2)这个一个HQL查询(Hibernate Query Language)
		//3)在select语句时,可以不要select子句
		
		Transaction tx = session.beginTransaction();
		Query q = session.createQuery("delete from com.data.model.User where id="+id);
//		Query q = session.createQuery("delete from User where id="+id);
		q.executeUpdate();
		
		tx.commit();
		
		HibernateUtil.closeSession();
	}
	
	//要求u中必需包含关键字值
	public void update(User u){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return;
		}

		Transaction tx = session.beginTransaction();
		session.update(u);
		tx.commit();
		
		HibernateUtil.closeSession();
	}
	
	//两种查询方法1)HQL;2)Criteria Query
	public List queryAll(){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return null;
		}

		List list = new ArrayList();

		Query q = session.createQuery("from com.data.model.User");//com.data.model.User均可
		list = q.list();
		
		Criteria c = session.createCriteria(User.class);
//		c.addOrder(Order.asc("id"));// 按ID排序
		list = c.list();
		
		Iterator i = list.iterator();
		while(i.hasNext()){
			User s = (User) i.next();
			log.debug(s.getName()+" " + s.getSex());
		}

		return list;
	}
	
	//分页查询
	public List queryPage(int pageNo){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return null;
		}

		List list = new ArrayList();

		int begin = pageSize * (pageNo - 1);
		int end = pageSize * pageNo;
		
		// 不能实现
//		Query q = session.createQuery("from hibernate.model.Stu limit " + begin + "," + end);
//		l = q.list();
		
		Criteria c = session.createCriteria(User.class);
		c.setMaxResults(pageSize);
		c.setFirstResult(begin);
		c.addOrder(Order.asc("id"));//指定排序字段
		list = c.list();

		return list;
	}
	
	//带有查询条件:按姓名查询,顺带解释一下复合查询
	public List query(User u){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return null;
		}

//		Query query = session.createQuery("from User where name='" + u.getName() +"'");
//		List list = query.list();
		
//		Criteria criteria = session.createCriteria(User.class);
////		criteria.add(Expression.eq("name",u.getName())); 
//		criteria.add(Expression.like("name","lin%"));
//		List list = criteria.list();
		
		List list = session.createCriteria(User.class)
			.add(Expression.eq("name",u.getName())).list();

//		//可以构造复杂条件
//		List list = session.createCriteria(User.class)
//			.add(Expression.eq("name",u.getName()))
//			.add(Expression.or(Expression.eq("name",u.getName()),Expression.ne("sex","1")))
//			.list();
		
		HibernateUtil.closeSession();
		return list;
	}
	

	// 主键加载get和load
	// get和load的区别:加载一个不存在的对象时,load会抛出异常,而get会返回null
	// 用load加载的数据,在会话关闭后,不再能够访问
	public User query(int id){
		Session session = HibernateUtil.currentSession();
		if (session == null){
			log.error("Error when get HibernateSession");
			return null;
		}
		User user = null;
//		user = (User)session.load(User.class,new Integer(id));
//		// 外部调用时报错,原因:用load加载的对象只有在session范围内才有效
		user = (User)session.get(User.class,new Integer(id));
		
		HibernateUtil.closeSession();
		return user;
	}
	
	public int getPageCount() {
		int ret = 0;
		Session session = HibernateUtil.currentSession();
		if (session == null) {
			System.out.println("null");
			return 0;
		}

		Query query = session.createQuery("select count(*) from User");
		List list = query.list();
		ret = ((Integer) list.get(0)).intValue();

		ret = (int) Math.ceil(ret / (double) pageSize);

		HibernateUtil.closeSession();
		return ret;
	}
		
	
	// ...其他查询方法
	
	public static void main(String[] args){
		UserOper uo = new UserOper();
//		User u = new User();
//		u.setName("LIN111");
//		u.setSex("1");
//		uo.add(u);
////		uo.delete(u);
////		uo.delete(177);
////		u.setId(180);
////		u.setName("LIN:LIN");
////		uo.update(u);
//		
//		uo.queryAll();
//		List l = uo.queryPage(1);
//		System.out.println(l);
		
//		List l = uo.query(u);
//		System.out.println(l);
		
		User u = uo.query(180);
		System.out.print(u);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -