package com.bbs.daoImpl; import com.bbs.dao.UserDao; import com.bbs.hibernate.factory.BaseHibernateDAO; import com.bbs.model.User; import java.util.List; import java.util.Set; import org.hibernate.LockOptions; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Example; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A data access object (DAO) providing persistence and search support for User * entities. Transaction control of the save(), update() and delete() operations * can directly support Spring container-managed transactions or they can be * augmented to handle user-managed Spring transactions. Each of these methods * provides additional information for how to configure it for the desired type * of transaction control. * * @see com.bbs.model.User * @author MyEclipse Persistence Tools */ public class UserDaoImpl extends BaseHibernateDAO implements UserDao { private static final Logger log = LoggerFactory.getLogger(UserDao.class); // property constants public static final String USERNAME = "username"; public static final String PASSWORD = "password"; public static final String PHOTO_URL = "photoUrl"; public static final String EMAIL = "email"; public static final String TYPE = "type"; public static final String SIGNATURE = "signature"; public static final String LEVEL = "level"; public static final String ACTIVE_CODE = "activeCode"; public static final String HAS_ACTIVE = "hasActive"; // public void save(User transientInstance) { // log.debug("saving User instance"); // try { // getSession().save(transientInstance); // log.debug("save successful"); // } catch (RuntimeException re) { // log.error("save failed", re); // throw re; // } // } // // public void delete(User persistentInstance) { // log.debug("deleting User instance"); // try { // getSession().delete(persistentInstance); // log.debug("delete successful"); // } catch (RuntimeException re) { // log.error("delete failed", re); // throw re; // } // } public User findById(java.lang.Integer id) { log.debug("getting User instance with id: " + id); try { Session session = getSession(); User instance = (User) session.get("com.bbs.model.User", id); session.flush(); session.close(); return instance; } catch (RuntimeException re) { log.error("get failed", re); throw re; } } public List findByProperty(String propertyName, Object value) { log.debug("finding User instance with property: " + propertyName + ", value: " + value); try { String queryString = "from User as model where model." + propertyName + "= ?"; Session session = getSession(); Query queryObject = session.createQuery(queryString); queryObject.setParameter(0, value); List list = queryObject.list(); session.flush(); session.close(); return list; } catch (RuntimeException re) { log.error("find by property name failed", re); throw re; } } public List findByUsername(Object username) { return findByProperty(USERNAME, username); } public List findByPassword(Object password) { return findByProperty(PASSWORD, password); } public List findByPhotoUrl(Object photoUrl) { return findByProperty(PHOTO_URL, photoUrl); } public List findByEmail(Object email) { return findByProperty(EMAIL, email); } public List findByType(Object type) { return findByProperty(TYPE, type); } public List findBySignature(Object signature) { return findByProperty(SIGNATURE, signature); } public List findByLevel(Object level) { return findByProperty(LEVEL, level); } public List findByActiveCode(Object activeCode) { return findByProperty(ACTIVE_CODE, activeCode); } public List findByHasActive(Object hasActive) { return findByProperty(HAS_ACTIVE, hasActive); } @Override public boolean regist(User user) { Session session = getSession(); Transaction transaction = session.beginTransaction(); session.save(user); transaction.commit(); session.flush(); session.close(); return true; } @Override public List<User> login(String username) { return findByUsername(username); } public void update(User user){ System.out.println("更新:"+user.getUsername()); Session session = getSession(); Transaction transaction = session.beginTransaction(); session.update(user); transaction.commit(); session.flush(); session.close(); } @Override public boolean changePassword(int userId, int oldpasswod, int newpassword) { return false; } /* (non-Javadoc) * @see com.bbs.dao.UserDao#isExist(com.bbs.model.User) */ @Override public int isExist(User user) { if (findByUsername(user.getUsername()).size()>0) return 1; else if (findByEmail(user.getEmail()).size()>0) return 2; return -1; } /* (non-Javadoc) * @see com.bbs.dao.UserDao#activeUser(java.lang.String) */ @Override public int activeUser(String activeCode) { List<User> uses = findByActiveCode(activeCode); if (uses != null && uses.size()>0){ User user = uses.get(0); if (user.getHasActive() == 0){ user.setHasActive(1); Session session = getSession(); Transaction transaction = session.beginTransaction(); session.update(user); transaction.commit(); session.flush(); session.close(); return 1; }else { return -1; } } return 0; } /* (non-Javadoc) * @see com.bbs.dao.UserDao#updateCode(java.lang.String, java.lang.String) */ @Override public void updateCode(String username, String code) { } @Override public User getUserById(Integer integer) { return findById(integer); } @Override public int getUserByEmail(String email) { List<User>users = findByEmail(email); if (users != null && users.size()>0) return users.get(0).getId(); return -1; } @Override public int getUserIdByUsername(String username) { List<User>users = findByUsername(username); if (users != null && users.size()>0) return users.get(0).getId(); return -1; } @Override public List<User> getUserLike(String like) { Session session = getSession(); String sql = "from User user where user.username like ? or user.email like ?"; Query query = session.createQuery(sql); query.setString(0, '%'+like+'%'); query.setString(1, '%'+like+'%'); List list = query.list(); session.flush(); session.close(); return list; } }