📄 userimpl.java
字号:
/*
* Created on 2006-2-27
* Last modified on 2007-9-8
* Powered by YeQiangWei.com
*/
package com.yeqiangwei.club.dao.hibernate.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import com.yeqiangwei.club.dao.UserDAO;
import com.yeqiangwei.club.dao.hibernate.ConnectionProvider;
import com.yeqiangwei.club.dao.hibernate.support.HibernateFacade;
import com.yeqiangwei.club.dao.hibernate.support.HibernateProvider;
import com.yeqiangwei.club.dao.hibernate.support.HibernateUserFacade;
import com.yeqiangwei.club.dao.model.User;
import com.yeqiangwei.club.param.UserParameter;
import com.yeqiangwei.util.Validator;
/**
* DAO层事务处理上移至service层
* @author yeqiangwei.com
*/
public class UserImpl implements UserDAO{
private static final Logger logger = Logger.getLogger(UserImpl.class);
private static final String FIND_USERID = "from User where userId=?";
private static final String FIND_USERNAME = "from User where userName=?";
private static final String FIND_USERNAME_PASSWORD = "from User where userName=? and password=?";
private static final String FIND_USERID_PASSWORD = "from User where userId=? and password=?";
private static final String FIND_EMAILADDRESS = "from User where emailAddress=?";
private static final String FIND_ALL = "form User order by userId desc ";
private static final String COUNT_ALL = "select count(userId) form User";
private static final String UPDATE_ISINDEXED_USERID = "update User set isIndexed=? where userId=?";
private HibernateProvider<User> getHibernateProvider(){
if(ConnectionProvider.whichConnection==0){
logger.info("HibernateFacade...");
return new HibernateFacade<User>();
}else{
logger.info("HibernateUserFacade...");
return new HibernateUserFacade<User>();
}
}
public int updateIsIndexedByUserId(int userId, boolean isIndexed){
HibernateProvider<User> hibernateProvider = this.getHibernateProvider();
hibernateProvider.createQuery(UPDATE_ISINDEXED_USERID);
hibernateProvider.setBoolean(0,isIndexed);
hibernateProvider.setInt(1,userId);
return hibernateProvider.executeUpdate();
}
public User create(User user) {
HibernateProvider<User> hibernateProvider = this.getHibernateProvider();
return hibernateProvider.save(user);
}
public User update(User item) {
HibernateProvider<User> hibernateProvider = this.getHibernateProvider();
return hibernateProvider.update(item);
}
public int delete(User user) {
StringBuffer hql = new StringBuffer();
hql.append("delete User where userId=?");
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(hql);
hibernateProvider.setInt("userId",user.getUserId());
return hibernateProvider.executeUpdate();
}
public User findById(int userId) {
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(FIND_USERID);
hibernateProvider.setInt(0, userId);
hibernateProvider.setCacheable(true);
hibernateProvider.setMaxResults(1);
return hibernateProvider.uniqueResult();
}
public User findByUserName(String userName) {
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(FIND_USERNAME);
hibernateProvider.setString(0, userName);
hibernateProvider.setCacheable(true);
hibernateProvider.setMaxResults(1);
return hibernateProvider.uniqueResult();
}
public User findByUserNameAndPassword(String userName, String password) {
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(FIND_USERNAME_PASSWORD);
hibernateProvider.setString(0, userName);
hibernateProvider.setString(1, password);
hibernateProvider.setMaxResults(1);
return hibernateProvider.uniqueResult();
}
public User findByUserIdAndPassword(int userId, String password) {
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(FIND_USERID_PASSWORD);
hibernateProvider.setInt(0, userId);
hibernateProvider.setString(1, password);
hibernateProvider.setMaxResults(1);
return hibernateProvider.uniqueResult();
}
public User findByEmailAddress(String emailAddress) {
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(FIND_EMAILADDRESS);
hibernateProvider.setString(0,emailAddress);
hibernateProvider.setMaxResults(1);
return hibernateProvider.uniqueResult();
}
public List findAll(UserParameter param) {
List<User> list = null;
int startRow = param.getPagination().getStartRow();
int endRow = param.getPagination().getEndRow();
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(FIND_ALL);
hibernateProvider.setFirstResult(startRow);
hibernateProvider.setMaxResults(endRow);
list = hibernateProvider.executeQuery();
return list;
}
public long countAll(UserParameter param) {
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(COUNT_ALL);
hibernateProvider.setCacheable(true);
return hibernateProvider.resultTotal();
}
private String getOrderBy(UserParameter param){
StringBuffer hql = new StringBuffer();
if(Validator.isEmpty(param.getOrderBy())){
hql.append(" order by userId desc");
}
else if(param.getOrderBy().byteValue()==0){
hql.append(" order by userId desc");
}
else if(param.getOrderBy().byteValue()==1){
hql.append(" order by userLoginTimes desc");
}
else if(param.getOrderBy().byteValue()==2){
hql.append(" order by userTopicCount desc");
}
else if(param.getOrderBy().byteValue()==3){
hql.append(" order by userReCount desc");
}
else if(param.getOrderBy().byteValue()==4){
hql.append(" order by userMark desc");
}
else if(param.getOrderBy().byteValue()==5){
hql.append(" order by userCredit desc");
}
else if(param.getOrderBy().byteValue()==6){
hql.append(" order by userMoney desc");
}
else if(param.getOrderBy().byteValue()==7){
hql.append(" order by lastLoginDateTime desc");
}
return hql.toString();
}
private String getWhere(UserParameter param){
StringBuffer hql = new StringBuffer();
if(!Validator.isEmpty(param.getSex())){
hql.append(" and userSex="+ param.getSex().byteValue() +"");
}
if(!Validator.isEmpty(param.getRegIp())){
hql.append(" and (regIp like '%"+ param.getRegIp() +"%'");
hql.append(" or lastLoginIp like '%"+ param.getRegIp() +"%')");
}
if(!Validator.isEmpty(param.getUserName())){
hql.append(" and userName like ? ");
}
if(!Validator.isEmpty(param.getAreaId())){
hql.append(" and userAreaId=");
hql.append(param.getAreaId());
}
if(!Validator.isEmpty(param.getLastLoginTime())){
hql.append(" and lastLoginDateTime>");
hql.append(param.getLastLoginTime());
}
return hql.toString();
}
public List<User> findByParameter(UserParameter param)
{
List<User> list = null;
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
Connection con = hibernateProvider.getSession().connection();
PreparedStatement pps = null;
ResultSet rs = null;
StringBuffer sql = new StringBuffer();
if(param.getPage()>1){
sql.append("SELECT TOP ");
sql.append(param.getRows());
sql.append(" * from (select *, ROW_NUMBER() OVER (");
sql.append(this.getOrderBy(param));
sql.append(") AS RowNo FROM Users where userId>0 ");
sql.append(this.getWhere(param));
sql.append(") AS A where RowNo>");
sql.append(param.getRows()*(param.getPage()-1));
}else{
sql.append("SELECT TOP ");
sql.append(param.getRows());
sql.append(" * FROM Users WHERE userId>0 ");
sql.append(this.getWhere(param));
sql.append(this.getOrderBy(param));
}
logger.debug(sql);
try {
pps = con.prepareStatement(sql.toString());
if(!Validator.isEmpty(param.getUserName())){
pps.setString(1, "%"+ param.getUserName() +"%");
}
rs = pps.executeQuery();
list = new ArrayList<User>();
while(rs.next()){
User item = new User();
item.setUserId(rs.getInt("userId"));
item.setUserName(rs.getString("userName"));
item.setPassword(rs.getString("password"));
item.setSex(rs.getByte("sex"));
item.setAnswer(rs.getString("answer"));
item.setArea(rs.getString("area"));
item.setAreaId(rs.getInt("areaId"));
item.setBirthday(rs.getString("birthday"));
item.setCity(rs.getString("city"));
item.setCredit(rs.getDouble("credit"));
item.setDeposit(rs.getDouble("deposit"));
item.setEmailAddress(rs.getString("emailAddress"));
item.setFileUploadIsOpen(rs.getByte("fileUploadIsOpen"));
item.setFileUploadMaxSize(rs.getLong("fileUploadMaxSize"));
item.setFileUploadUseSize(rs.getLong("fileUploadUseSize"));
item.setGroupId(rs.getInt("groupId"));
item.setHomepage(rs.getString("homepage"));
item.setIntro(rs.getString("intro"));
item.setLastLoginDateTime(rs.getLong("lastLoginDateTime"));
item.setLastLoginIp(rs.getString("lastLoginIp"));
item.setLoginTimes(rs.getInt("loginTimes"));
item.setMoney(rs.getDouble("money"));
item.setNoAllowed(rs.getByte("noAllowed"));
item.setPenName(rs.getString("penName"));
item.setPhoto(rs.getString("photo"));
item.setQuestion(rs.getString("question"));
item.setRegDateTime(rs.getLong("regDateTime"));
item.setRegIp(rs.getString("regIp"));
item.setRegisterNumber(rs.getString("registerNumber"));
item.setReplys(rs.getInt("replys"));
item.setScore(rs.getDouble("score"));
item.setSignatures(rs.getString("signatures"));
item.setTopics(rs.getInt("topics"));
item.setWork(rs.getString("work"));
list.add(item);
}
} catch (SQLException e) {
logger.error(e.toString());
}
return list;
}
/*
public List<User> findByParameter(UserParameter param)
{
List<User> list = null;
int startRow = param.getPagination().getStartRow();
int endRow = param.getPagination().getEndRow();
StringBuffer hql = new StringBuffer();
hql.append("from User where userId>0");
hql.append(this.where(param));
hql.append(this.orderBy(param));
HibernateFacade<User> facade = new HibernateFacade<User>();
facade.createQuery(hql);
if(!Validator.isEmpty(param.getUserName())){
facade.setString(0, "%"+ param.getUserName() +"%");
}
facade.setFirstResult(startRow);
facade.setMaxResults(endRow);
list = facade.executeQuery();
return list;
}
*/
public long countByParameter(UserParameter param) {
StringBuffer hql = new StringBuffer();
hql.append("select count(userId) from User where userId>0");
if(!Validator.isEmpty(param.getSex())){
hql.append(" and userSex="+ param.getSex().byteValue() +"");
}
if(!Validator.isEmpty(param.getLastLoginTime())){
hql.append(" and lastLoginDateTime>");
hql.append(param.getLastLoginTime());
}
if(!Validator.isEmpty(param.getRegIp())){
hql.append(" and (regIp like '%"+ param.getRegIp() +"%'");
hql.append(" or lastLoginIp like '%"+ param.getRegIp() +"%')");
}
if(!Validator.isEmpty(param.getUserName())){
hql.append(" and userName like ?");
}
if(!Validator.isEmpty(param.getAreaId())){
hql.append(" and userAreaId=");
hql.append(param.getAreaId());
}
HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
hibernateProvider.createQuery(hql);
hibernateProvider.setCacheable(true);
if(!Validator.isEmpty(param.getUserName())){
hibernateProvider.setString(0, "%"+ param.getUserName() +"%");
}
return hibernateProvider.resultTotal();
}
public int delete(List<Integer> ids) {
return 0;
}
/*
public static void main(String[] args){
com.yeqiangwei.club.dao.hibernate.ConnectionManager.init();
UserImpl u = new UserImpl();
User user = new User();
user.setUserId(20);
user.setUserName("aaaa");
com.yeqiangwei.club.dao.tran.TransactionUtils tran = new com.yeqiangwei.club.dao.tran.TransactionUtils();
tran.beginTransaction();
u.update(user);
tran.commit();
}
*/
/* 剔出重复的用户名 */
/*
private void duplicateUserName(String userName){
User cui = null;
int userId = 0;
StringBuffer hql = new StringBuffer();
hql.append("from User where userName=? order by userId");
Session session = ConnectionManager.getSession();
try{
Query query = session.createQuery(hql.toString()).setString(0, userName);
query.setMaxResults(1);
cui = (User) query.uniqueResult();
if(cui!=null){
userId = cui.getUserId();
Transaction tran = session.beginTransaction();
String s = "delete from User where userId>?";
Query del = session.createQuery(s).setInteger(0, userId);
int c = del.executeUpdate();
tran.commit();
logger.error(c+" 条重复用户名记录被删除:"+userName+"|"+userId);
}
}catch(HibernateException e){
logger.error(e.toString());
}
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -