package cn.itcast.b_dao; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import cn.itcast.a_helloword.User; public class UserDao { private static SessionFactory sessionFactory; static { //读取配置文件并生成Session工厂对象 Configuration cfg=new Configuration(); cfg.configure("hibernate.cfg.xml"); sessionFactory=cfg.buildSessionFactory(); } /** * 保存用户 * @param user */ public void save(User user){ Session session=sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); session.save(user);//更新 tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; } finally{ session.close(); } } /** * 更新用户 * @param user */ public void update(User user){ Session session=sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); session.update(user);//保存 tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; } finally{ session.close(); } } /** *获取指定id的对象 * @param id * @return */ public User getById(int id){ Session session=sessionFactory.openSession(); Transaction tx=null; try { tx=session.beginTransaction(); User user = (User)session.get(User.class, id);//获取 tx.commit(); return user; } catch (RuntimeException e) { tx.rollback(); throw e; }finally{ session.close(); } } /** * 删除指定id的用户 * * @param id */ public void delete(int id) { Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); // ------------------------------------- Object user = session.get(User.class, id); // 先从数据库获取对象 session.delete(user); // 删除的是实体对象 // ------------------------------------- tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; } finally { session.close(); } } /** * 查询全部 * @return */ public List<User> findAll(){ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); List<User> list = session.createQuery("FROM User").list();//使用H QL查询 tx.commit(); return list; } catch (RuntimeException e) { tx.rollback(); throw e; } finally{ session.close(); } } /** * * @param firstResult * 开始获取的记录的索引 * @param maxResult * 最多获取多少条数据 * @return 总记录数+一段数据 */ public QueryResult<User> findAll(int firstResult,int maxResult){ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); //1.查询总记录数 Long count = (Long) session.createQuery( "SELECT COUNT(*) FROM User") .uniqueResult(); //执行查询 //2. 查询一段数据 Query query = session.createQuery("FROM User"); query.setFirstResult(firstResult); query.setMaxResults(maxResult); List<User> list = query.list(); tx.commit(); return new QueryResult<User>(list, count); } catch (RuntimeException e) { tx.rollback(); throw e; }finally{ session.close(); } } }数据库 |