Hibernate的增刪改查(基於getCurrentSession)

博主在學習到hibernate的時候對原本的sql增刪改查有一點疑問,特別是瞭解到getcurrentsession的時候,對查詢單個數據,修改數據方面很困惑,今天查到一篇文章,特地轉載到博客,和大家分享!


public class UserDaoImpl implements UserDao {
	@Autowired
	private SessionFactory sessionFactory;
	//登錄
	public User selectUser(User user) throws Exception {
		Query query = sessionFactory.getCurrentSession().createQuery("from User u where u.name=? and u.password=?");
		query.setString(0, user.getName());
		query.setString(1, user.getPassword());
		List list = query.list();
		if(list==null||list.size()==0){
			throw new RuntimeException("查詢失敗");
		}
		return list.get(0);
	}
	
	//查詢所有
	public List getAllUsers() throws Exception {
		Query query = sessionFactory.getCurrentSession().createQuery("from User");
		List list = query.list();
		return list;
	}
	
	//單個查詢
	public User getUser(Integer id) throws Exception {
		return (User) sessionFactory.getCurrentSession().createQuery("from User u where u.id ="+id).uniqueResult();
	}

	//添加用戶
	public void addUser(User user) throws Exception {
		System.out.println("11111111111111111"+user.getName());
		sessionFactory.getCurrentSession().save(user);
	}
	
	//刪除用戶
	public void delUser(Integer id) throws Exception {
		sessionFactory.getCurrentSession().createQuery("delete User u where u.id="+id).executeUpdate();	   	
		
	}
	
	//修改用戶
	public void updateUser(User user) throws Exception {
		 Session session = sessionFactory.getCurrentSession();
		 session.beginTransaction();
		 String hql = ("update User u set u.name = ?,u.password = ?,u.loginDate = ? where u.id = ?");  
		 Query query = session.createQuery(hql);
		 query.setParameter(0, user.getName());
		 query.setParameter(1, user.getPassword());
		 query.setParameter(2, user.getLoginDate());
		 query.setParameter(3, user.getId());
		 query.executeUpdate();
		 session.getTransaction().commit(); 			
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章