Hibernate的增删改查(基于getCurrentSession)

本文提供了一个Hibernate实现的UserDaoImpl类实例,展示了如何通过Hibernate进行用户的登录验证、查询所有用户、单个查询、添加用户、删除用户及更新用户等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博主在学习到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(); 			
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值