package com.nineteeneightyeight.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.nineteeneightyeight.blog.BlogUser;
import com.nineteeneightyeight.util.ConstantUtil;
/**
* 对数据库中UserTable进行操作的数据库控制类,对用户信息进行查询、插入、更改以及获取用户已关注的对象
*
* @author flytreeleft
*
*/
public class UserDao extends DBDao {
public UserDao() {
}
/**
* 通过ResultSet填充UserEntity实体
*
* @throws SQLException
* */
@Override
protected Object composeEntity(ResultSet resultSet) throws SQLException {
BlogUser user = new BlogUser();
if (resultSet != null) {
// 按字段填充数据
user.setId(resultSet.getInt("id"));
user.setName(resultSet.getString("name"));
user.setRealName(resultSet.getString("realname"));
user.setGender(resultSet.getInt("gender"));
user.setPwd(resultSet.getString("pwd"));
user.setAddress(resultSet.getString("address"));
user.setBirthday(resultSet.getString("birthday"));
user.setBrief(resultSet.getString("brief"));
}
return user;
}
/**
* 通过用户ID获取用户对象,该对象唯一
*
* @param userId
* 用户ID
* @return UserEntity对象
* */
public BlogUser getUserById(int userId) {
BlogUser user = new BlogUser();
String query = "";
if (userId > ConstantUtil.INVALID_USER_ID) {
query = "select * from UserTable where id = " + userId;
try {
Iterator<Object> it = executeQuery(query, 0, 1).iterator();
if (it.hasNext()) {
user = (BlogUser) it.next();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
/**
* 通过用户名获取用户对象,该对象唯一
*
* @param name
* 用户名
* @return
*/
public BlogUser getUserByName(String name) {
BlogUser user = new BlogUser();
String query = "";
if (name != null && !name.isEmpty()) {
name = name.replaceAll("'", "").replaceAll("%", "");
query = "select * from UserTable where id > " + ConstantUtil.INVALID_USER_ID
+ " and name = '" + name + "'";
try {
Iterator<Object> it = executeQuery(query, 0, 1).iterator();
if (it.hasNext()) {
user = (BlogUser) it.next();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
/**
* 根据检索式搜索用户信息,返回记录为从编号为index开始,返回记录数为count
*
* @param query
* 检索式
* @param index
* 返回记录的起始编号
* @param count
* 返回记录的总数,小于或等于0时返回所有记录
* @return
*/
private List<BlogUser> getUsersList(String query, int index, int count) {
List<BlogUser> userList = new ArrayList<BlogUser>();
List<Object> list = null;
if (query != null && !query.isEmpty()) {
if (index < 0) {
index = 0;
}
if (count < 0) {
count = 0;
}
try {
// 得到搜索结果集合
list = executeQuery(query, index, count);
// 将获取的对象进行类型转换
for (Object obj : list) {
userList.add((BlogUser) obj);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return userList;
}
/**
* 高级搜索用户,可以按用户真实姓名、性别、地址和出生日期或四者的任意组合搜索,若均为空则返回所有结果
*
* @param realName
* 用户真实姓名 ,为空则以剩下项为搜索条件
* @param gender
* 用户性别 ,只能取0或1,否则以剩下项为搜索条件
* @param address
* 用户地址 ,为空则以剩下项为搜索条件
* @param startDate
* 起始用户出生日期 ,为空则以剩下项为搜索条件
* @param endDate
* 终止用户出生日期 ,为空则以剩下项为搜索条件
* @param index
* 起始号 ,表示从编号(从0开始)为index的记录开始取数据
* @param count
* 所要取的记录总数 ,count=0标志获取所有记录
* @return
*/
public List<BlogUser> advancedSearch(String realName, int gender, String address,
String startDate, String endDate, int index, int count) {
String query = "select * from UserTable where id > " + ConstantUtil.INVALID_USER_ID
+ " and name like '%%' ";
if (realName != null && !realName.isEmpty()) {
realName = realName.replaceAll("'", "").replaceAll("%", "");
// 按真实名称搜索
query += " and realname like '%" + realName + "%'";
}
if (gender >= 0 && gender <= 1) {
// 按性别搜搜
query += " and gender = " + gender + "";
}
if (address != null && !address.isEmpty()) {
address = address.replaceAll("'", "").replaceAll("%", "");
// 按地址搜索
query += " and address like '%" + address + "%'";
}
if (startDate != null && !startDate.isEmpty()) {
startDate = startDate.replaceAll("'", "").replaceAll("%", "");
// 按起始出生日期搜搜
query += " and birthday >= '" + startDate + "'";
}
if (endDate != null && !endDate.isEmpty()) {
endDate = endDate.replaceAll("'", "").replaceAll("%", "");
// 按终止出生日期搜索
query += " and birthday <= '" + endDate + "'";
}
return getUsersList(query, index, count);
}
/**
* 获取最受欢迎的用户,即状态被回复数最高的用户,不包括用户评论自己的状态
*
* @param count
* 返回的记录总数,小于等于0时返回空表
* @return
*/
public List<BlogUser> getPopularUsers(int count) {
List<BlogUser> userList = new ArrayList<BlogUser>();
String query = "";
if (count > 0) {
query = "select * from UserTable where id in "
+ "(select to_id from CommentTable where from_id != to_id group by to_id order by count(to_id) desc)"
+ " and id > " + ConstantUtil.INVALID_USER_ID;
userList = getUsersList(query, 0, count);
}
return userList;
}
/**
* 获取活跃度最高的用户,即发状态和评论最多的用户
*
* @param count
* 返回的记录数,小于等于0时返回空表
* @return
*/
public List<BlogUser> getActiveUsers(int count) {
List<BlogUser> userList = new ArrayList<BlogUser>();
String query = "";
if (count > 0) {
query = "select * from UserTable where id in "
+ "(select id from ActiveTable group by id order by count(id) desc)"
+ " and id > " + ConstantUtil.INVALID_USER_ID;
userList = getUsersList(query, 0, count);
}
return userList;
}
/**
* 获取用户的活跃度,即所发布的状态数与已回复的状态数之和
*
* @param userId
* 用户ID
* @return
*/
public long getActivesOf(int userId) {
Long actives = (long) 0;
String query = "";
if (userId > ConstantUtil.INVALID_USER_ID) {
query = "select count(id) as actives from ActiveTable where id = " + userId;
try {
// 获取用户的活跃度
Object obj = getValueOf("actives", query);
if (obj != null) {
actives = (Long) obj;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return actives;
}
/**
* 获取用户的受欢迎度,即状态被回复数
*
* @param userId
* 用户ID
* @return
*/
public long getPopularsOf(int userId) {
Long populars = (long) 0;
String query = "";
if (userId > ConstantUtil.INVALID_USER_ID) {
query = "select count(to_id) as populars from CommentTable where to_id = " + userId;
try {
// 获取用户的受欢迎度
Object obj = getValueOf("populars", query);
if (obj != null) {
populars = (Long) obj;
}
} catch (SQLEx
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本微博系统为IBM实训期间所完成的一个还算不错的系统,现上传与大家共享。 该系统能够实现头像和背景音乐的上传,能够发送广播给系统在线的所有人,支持表情的发送。 界面是仿照MiniZhi(www.minizhi.com)的。 其中使用了ajax和jquery框架和DWR技术。 希望大家在看后能提供有益的意见或建议,邮箱地址:flytreeleft@126.com,谢谢。 望看过之后再评分... 注:该版本由于改后匆忙,未进行较为全面的测试,后来经网友发现了其中的两个问题:一是 无法正确注册;二是 添加关注无法正确执行。下载该项目的网友要注意这两个问题
资源推荐
资源详情
资源评论
收起资源包目录
MicroBlog微博系统 (169个子文件)
UserDao.class 9KB
UserManager.class 7KB
FileUtil.class 6KB
UserAction.class 6KB
StatusDao.class 5KB
DBDao.class 4KB
StatusManager.class 4KB
BlogAlbum.class 4KB
CommentDao.class 4KB
FileAction.class 3KB
CommentAction.class 3KB
StatusAction.class 3KB
CommentManager.class 3KB
BroadcastAction.class 3KB
AttentionAction.class 3KB
SourceManager.class 3KB
StatusParse.class 3KB
UserEntity.class 2KB
CommentEntity.class 2KB
AttentionDao.class 2KB
StatusEntity.class 2KB
BlogMessage.class 2KB
BlogUser.class 2KB
SiteFilter.class 2KB
BlogPhoto.class 2KB
BlogMusic.class 2KB
DaoUtil.class 1KB
BlogFace.class 1KB
Welcome.class 1KB
ConstantUtil.class 651B
SiteUtil.class 527B
.classpath 548B
org.eclipse.wst.common.component 457B
org.eclipse.wst.jsdt.ui.superType.container 49B
user.css 18KB
index.css 3KB
global.css 2KB
zhimaoyi.gif 9KB
qiugongzuo.gif 9KB
qiugaoqishuang.gif 7KB
luoye.gif 7KB
sicon.gif 6KB
han.gif 5KB
nuanbeiwo.gif 4KB
shengqi.gif 4KB
jiangwen.gif 4KB
shaoxiang.gif 3KB
chifan.gif 3KB
shengbing.gif 3KB
wen.gif 2KB
outu.gif 2KB
wait.gif 2KB
koubi.gif 2KB
fangliugan.gif 2KB
keai.gif 2KB
ku.gif 2KB
jingya.gif 2KB
kun.gif 2KB
tiaopi.gif 2KB
haixiu.gif 1KB
zhuzui.gif 1KB
yun.gif 1KB
semimi.gif 1KB
shudaizi.gif 1KB
taoqi.gif 878B
weixiao.gif 843B
liukoushui.gif 740B
ganga.gif 724B
daxiao.gif 694B
chanxiao.gif 646B
jiong.gif 622B
bianbian.gif 603B
kubi.gif 534B
jingkong.gif 505B
mysql-connector-java-5.1.13-bin.jar 750KB
commons-collections-3.2.jar 558KB
dwr.jar 496KB
commons-lang-2.3.jar 240KB
commons-beanutils-1.7.0.jar 184KB
json-lib-2.1-jdk15.jar 122KB
commons-chain-1.2.jar 90KB
commons-io-1.3.2.jar 86KB
ezmorph-1.0.3.jar 76KB
commons-fileupload-1.2.1.jar 56KB
commons-logging-1.0.4.jar 37KB
UserDao.java 13KB
UserManager.java 10KB
UserAction.java 7KB
FileUtil.java 6KB
DBDao.java 5KB
StatusManager.java 5KB
StatusDao.java 5KB
CommentAction.java 3KB
BlogAlbum.java 3KB
CommentDao.java 3KB
StatusAction.java 3KB
FileAction.java 3KB
StatusParse.java 3KB
AttentionAction.java 3KB
CommentManager.java 3KB
共 169 条
- 1
- 2
资源评论
- newyang19892012-07-24改了一下 基本能用
- 兜兜里有糖L2013-03-28可用 新手参考
- little0416new22011-12-04这个算是在csdn上稍微靠谱的微博了,不过功能还是不全,有一些问题,可以当原型看看。作者没有采用开源的框架,web层面的性能提高了,跟数据库连接哪里恐怕还是要借助一些框架才好。
- caizhongda2011-11-10还行,,,其中使用了ajax和jquery框架和DWR技术。
flytreeleft
- 粉丝: 38
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功