package com.lh.dao;

import java.util.Calendar;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.lh.model.User;

/**
 * 处理用户注册登录的DAO管理类
 * @author LH
 */
public class UserDao {
	private static UserDao instance = null;
	/**
	 * 返回一个UserDao实例
	 * @return
	 */
	public static UserDao getInstance(){
		if(instance==null) instance = new UserDao();
		return instance;
	}
	/**
	 * 保存用户注册信息
	 * @param user
	 * @return
	 */

public boolean saveUser(User user){
	boolean result = false;//标记是否保存成功
	Session session = null;//创建Session实例
	Transaction trans = null;//创建事务
	try{
		
		session = SessionFactoryProvider.getSession();//创建Session实例
		trans=session.beginTransaction();//获取事务
		trans.begin();//开始事务
		session.save(user);//保存对象
		trans.commit();//提交事务
		result=true;
	}catch(Exception ex){
		//如果出现异常事务回滚
		if(trans!=null&&trans.isActive()) trans.rollback();
		ex.printStackTrace();
	}finally{
		session.close();
	}
	return result;
}
	/**
	 * 修改用户注册信息
	 * @param user
	 * @return
	 */
	public boolean updateUser(User user){
		boolean result = false;//标记是否保存成功
		Session session = null;//创建Session实例
		Transaction trans = null;//创建事务
		try{
			//从SessionFactory工厂类总获取Session实例
			session = SessionFactoryProvider.getSession();
			trans=session.beginTransaction();//获取事务
			trans.begin();//开始事务
			session.update(user);//更新对象
			trans.commit();//提交事务
			result=true;
		}catch(Exception ex){
			//如果出现异常事务回滚
			if(trans!=null&&trans.isActive()) trans.rollback();
			ex.printStackTrace();
		}
		return result;
	}
	/**
	 * 查询个人用户信息
	 * @return
	 */
	public User selectUserById(String userId){
		User user = null;
		Session session = null;
		try{
			//从SessionFactory工厂类总获取Session实例
			session = SessionFactoryProvider.getSession();
			Query query = session.createQuery("from User where userId=:id");
			query.setString("id", userId);
			//从查询的结果集合中获取到User实例
			user = (User)query.list().get(0);
		}catch(Exception ex){
			ex.printStackTrace();
		}finally{
			session.close();//关闭session
		}
		return user;
	}
	/**
	 * 验证用户登录
	 * @param userName:用户名
	 * @param userPwd:密码
	 * @return
	 */
public boolean enter(String userName,String userPwd){
	boolean result = false;
	Session session = null;
	try{
		//从SessionFactory工厂类总获取Session实例
		session = SessionFactoryProvider.getSession();	
		//查询是否有该用户的hql语句
		String hql="select count(userId) from User where userName=:name and userPwd=:pwd";
		//创建query对象
		Query query=session.createQuery(hql);
		//设置用户名参数
		query.setString("name", userName);
		//设置密码参数
		query.setString("pwd", userPwd);
		//返回的int值,查询用户的个数
		int userCount=Integer.parseInt(query.list().get(0).toString());
		if(userCount==1) result = true;
	}catch(Exception ex){
		ex.printStackTrace();
	}finally{
		session.close();
	}
	return result;
}
	/**
	 * 根据用户名和密码查找用户对象
	 * @param name 用户名
	 * @param pwd 密码
	 * @return
	 */
	
public User getUserByNameAndPwd(String name,String pwd){
	User user = null;
	Session session = null;
	try{
		session = SessionFactoryProvider.getSession();	//创建Session实例
		String hql=" from User where userName=:name and userPwd=:pwd";//hql语句
		Query query=session.createQuery(hql);//创建query对象
		query.setString("name", name);//设置用户名参数
		query.setString("pwd", pwd);//设置密码参数
		if(query.list()!=null&&query.list().size()>0){//判断返回的list集合是否存在用户信息对象
			user=(User)query.list().get(0);
		}
	}catch(Exception ex){
		ex.printStackTrace();
	}finally{
		session.close();
	}
	return user;
}
	/**
	 * 根据用户注册输入的用户名
	 * 判断该用户是否存在
	 * @param name
	 * @return 存在返回true,不存在返回false
	 */
	
public boolean getUserByName(String name){
	boolean result = false;
	Session session = null;
	try{	
		session = SessionFactoryProvider.getSession();	//创建Session实例
		String hql=" from User where userName=:name";	//查询是否有该用户的hql语句
		Query query=session.createQuery(hql);			//创建query对象
		query.setString("name", name);					//设置用户名参数
		if(query.list()!=null&&query.list().size()>0)	//根据返回的list集合,判断是否存在该用户
			result = true;
	}catch(Exception ex){
		ex.printStackTrace();
	}finally{
		session.close();
	}
	return result;
}
}
最近下载更多
过过成功尺寸  LV7 2021年12月22日
kiritoYCQ  LV5 2020年11月28日
dyihui  LV12 2020年11月19日
霖望1234  LV2 2020年7月18日
本机号码  LV2 2020年7月6日
秘制酒心巧克力  LV6 2020年6月19日
wangshangkun  LV2 2020年5月25日
木扬木  LV2 2020年4月25日
大杰打劫  LV8 2020年3月24日
gezongyuan  LV9 2020年1月7日
最近浏览更多
PISCESPLUS  LV4 9月3日
ymrdhgv 6月24日
暂无贡献等级
晴曛  LV6 2月20日
xiquyiyuan  LV10 1月12日
WBelong  LV8 2023年12月28日
Henew168  LV2 2023年12月4日
李朝磊  LV18 2023年10月23日
陆程江  LV2 2023年5月28日
uni-code_0123  LV1 2023年4月20日
ssmss951  LV3 2023年2月27日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友