package com.qunar.user.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import com.qunar.user.dao.UserDao;
import com.qunar.user.model.Limiter;
import com.qunar.user.model.User;
/**
* 操作q_user数据表的接口实现
*
* @author jasmine.wei
*
*/
public class UserDaoImpl extends JdbcDaoSupport implements UserDao {
/**
* @param user 要新增的user实体
* @return 新增实体插入数据库生成的自增主键
* <ul>
* 另一种实现方式 Object[] args = {user.getUserId(),user.getNickname(),user.getRealname(),
* user.getPassword(),user.getEmail(),new Integer(user.getStatus())}; String sql =
* "insert into q_user(user_id,nickname,realname,password,email," + "status) values(?,?,?,?,?,?)";
* //获得JdbcTemplate对象,并调用update方法对数据库进行操作 this.getJdbcTemplate().update(sql,args);
* <ul>
*/
@Override
public int addUser(final User user) {
final String sql = "insert into q_user(user_id,nickname,realname,password,email,"
+ "status,last_login_time) values(?,?,?,?,?,?,?)";
KeyHolder key = new GeneratedKeyHolder();
try {
this.getJdbcTemplate().update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement preState = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
preState.setString(1, user.getUserId());
preState.setString(2, user.getNickname());
preState.setString(3, user.getRealname());
preState.setString(4, user.getPassword());
preState.setString(5, user.getEmail());
preState.setInt(6, user.getStatus());
preState.setTimestamp(7, new Timestamp(user.getLastLoginTime().getTime()));
return preState;
}
}, key);
} catch (DataAccessException e) {
return 0;
}
// 从主键持有者中获得主键值
user.setId(key.getKey().intValue());
return user.getId();
}
/**
* 不真正从数据库删除,而是更新status字段标记为删除状态
*
* @param id 用户id
*/
@Override
public boolean deleteUser(int id) {
Object[] args = { 2, new Integer(id) };
String sql = "update q_user set status =? where id = ?";
int status = this.getJdbcTemplate().update(sql, args);
if (status == -1) {
return false;
}
return true;
}
/**
* @param user 要更新的user实体
* @return 是否更新成功
*/
@Override
public boolean updateUser(User user) {
Object[] args = { user.getUserId(), user.getNickname(), user.getRealname(), user.getPassword(),
user.getEmail(), new Integer(user.getStatus()), new Integer(user.getId()) };
String sql = "update q_user set user_id=?,nickname=?,realname=?,password=?,email=?," + "status=? where id=?";
int status = this.getJdbcTemplate().update(sql, args);
if (status == -1) {
return false;
}
return true;
}
/**
* 根据id查询用户详情
*
* @param id 用户id
* @return 实体所对应的User对象,查询不到的情况返回null
*/
@Override
public User queryUser(int id) {
String sql = "select * from q_user where id=?";
User user = null;
try {
user = getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id);
} catch (DataAccessException e) {
return null;
}
return user;
}
/**
* 根据userId查询用户详情
*
* @param userId 用户userId
* @return 实体所对应的User对象,查询不到的情况返回null
*/
@Override
public User queryUser(String userId) {
String sql = "select * from q_user where user_id=?";
User user = null;
try {
user = getJdbcTemplate().queryForObject(sql, new UserRowMapper(), userId);
} catch (DataAccessException e) {
return null;
}
return user;
}
/**
* 根据id查询用户详情
*
* @param id 用户id
* @return 实体所对应的User对象,查询不到的情况返回null
*/
@Override
public List<User> queryUserList(Limiter limiter) {
List<User> list = null;
try {
list = (List<User>) getJdbcTemplate().query("select * from q_user limit ?, ?", new UserRowMapper(),
limiter.getStart(), limiter.getSize());
} catch (DataAccessException e) {
return null;
}
return list;
}
/**
* @author jasmine.wei 私有内部类 继承了RowMapper接口 用于将ResultSet包装成相应的值对象后返回
*/
private class UserRowMapper implements RowMapper<User> {
public User mapRow(ResultSet rs, int rowNumber) throws SQLException {
User user = new User(rs.getString("user_id"), rs.getString("nickname"), rs.getString("realname"),
rs.getString("password"), rs.getString("email"), rs.getInt("status"));
user.setLastLoginTime(rs.getTimestamp("last_login_time"));
user.setId(rs.getInt("id"));
return user;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
springmvc实现的简单用户管理系统
共69个文件
class:20个
java:13个
xml:11个
3星 · 超过75%的资源 需积分: 50 67 下载量 100 浏览量
2014-08-20
16:06:16
上传
评论
收藏 87KB ZIP 举报
温馨提示
springmvc实现的简单用户管理系统,包括直接生成页面和返回json两种方式,配置明了,简单易懂,适合初学者
资源推荐
资源详情
资源评论
收起资源包目录
userManager.zip (69个子文件)
userManager
pom.xml 7KB
deploy
user.sql 3KB
target
test-classes
com
qunar
user
service
impl
TestUserServiceImpl.class 4KB
maven-status
maven-compiler-plugin
compile
default-compile
inputFiles.lst 1011B
createdFiles.lst 426B
testCompile
default-testCompile
inputFiles.lst 92B
createdFiles.lst 54B
generated-test-sources
test-annotations
work
jsp
org
apache
jsp
WEB_002dINF
index_jsp.class 4KB
user
userList_jsp.class 7KB
jsonuser_jsp.class 10KB
register_jsp.class 10KB
login_jsp.class 8KB
m2e-wtp
web-resources
META-INF
maven
com.qunar.user
userManager
pom.xml 7KB
pom.properties 217B
MANIFEST.MF 112B
classes
logback.xml 705B
jdbc.properties 218B
com
qunar
user
interceptor
UserValidationInterceptor.class 1KB
RequestTimeInterceptor.class 2KB
dao
UserDao.class 619B
impl
UserDaoImpl.class 4KB
UserDaoImpl$1.class 2KB
UserDaoImpl$UserRowMapper.class 2KB
exception
UserException.class 816B
model
User.class 4KB
Limiter.class 787B
customerSerializer
DateCustomerSerializer.class 1KB
controller
UserJsonController.class 5KB
UserController.class 3KB
service
IUserService.class 685B
impl
UserServiceImpl.class 3KB
spring
app-root.xml 890B
app-db.xml 3KB
generated-sources
annotations
.settings
org.eclipse.m2e.core.prefs 90B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.core.resources.prefs 155B
org.eclipse.wst.common.component 676B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.validation.prefs 50B
.jsdtscope 508B
org.eclipse.jdt.core.prefs 430B
src
test
java
com
qunar
user
service
impl
TestUserServiceImpl.java 3KB
main
webapp
WEB-INF
error404.jsp 404B
web.xml 2KB
user
userList.jsp 922B
userUpdate.jsp 1KB
login.jsp 1KB
register.jsp 1KB
dispatcherServlet-servlet.xml 3KB
error.jsp 463B
resources
logback.xml 705B
jdbc.properties 218B
spring
app-root.xml 890B
app-db.xml 3KB
java
com
qunar
user
interceptor
RequestTimeInterceptor.java 1KB
UserValidationInterceptor.java 953B
dao
UserDao.java 1KB
impl
UserDaoImpl.java 6KB
exception
UserException.java 581B
model
User.java 3KB
Limiter.java 688B
customerSerializer
DateCustomerSerializer.java 845B
controller
UserController.java 3KB
UserJsonController.java 4KB
service
IUserService.java 2KB
impl
UserServiceImpl.java 3KB
.project 1KB
.classpath 1KB
共 69 条
- 1
资源评论
- kezhenxu942016-03-21感谢分享!!
- 酱油小龟2016-09-16这这个简单的功能要10分,太坑
狼痕
- 粉丝: 1
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 常用工具配置docker,elasticsearch,minio,nfs,nginx,tippercane,vsftp
- 基于IIC接口E2PROM(AT24C64)芯片FPGA读写VERILOG 设计源码+仿真激励文件.zip
- 基于FPGA深度学习的Block 模块方案实战,适合FPGA初学者
- 20225T9050袁凤(1).py
- Rsa算法详解.docx
- Youren Shang InClassQuiz.ipynb
- code-qat.zip
- usb-serial-for-android
- drools决策表示例Excel文件
- AD5724芯片FPGA Verilog驱动源码+4通道12bit位宽的DAC芯片AD5724技术手册.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功