Spring3MVC+MyBatis+ExtJs3整合开发系列之三:人员管理模块

:lol: hi,boys and girls,i come back again!

承接上篇:[url=http://kimho.iteye.com/blog/1141703]Spring3MVC+MyBatis+ExtJs3整合开发系列之二:菜单模块[/url],这次带来了Spring3MVC+MyBatis+ExtJs3整合开发系列之第三篇:人员管理模块。

这次改动比较大,下面是模块结构图,总算把之前搭建的package都填满了:

[img]http://dl.iteye.com/upload/attachment/534311/0bf0c16f-bd9f-3f73-a179-ecce1bff6898.jpg[/img]

[b]界面预览[/b]:

人员管理模块主界面:
[img]http://dl.iteye.com/upload/attachment/534354/c64b44d9-4c8e-35a0-94d2-c72c1855c63f.jpg[/img]

新增/修改人员信息界面:
[img]http://dl.iteye.com/upload/attachment/534320/50ac7f7a-f7d9-3711-bf2a-d7d66cc4ddf3.jpg[/img]

修改密码界面:
[img]http://dl.iteye.com/upload/attachment/534328/01c47194-21e0-324c-83bd-29d4a3837c35.jpg[/img]

[b]代码预览[/b]:

[b]persistence层[/b]
public interface UserMapper {
Long getId();
User login(Map<String,Object> param);
User getUser(Map<String,Object> param);
List<User> getUserList();
void insertUser(User user);
void insertUserRole(Map<String,Object> param);
void updateUser(User user);
void updateUserRole(Map<String,Object> param);
void deleteUser(Map<String,Object> param);
void deleteUserRole(Map<String,Object> param);
void changeUserPassword(Map<String,Object> param);
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.kimho.user.persistence.UserMapper">

<cache />

<select id="getId" resultType="long">
SELECT max(id)+1 FROM t_user
</select>

<select id="login" parameterType="map" resultType="User">
SELECT
id,
name,
password,
create_date
FROM t_user
WHERE name = #{name} AND password = #{password}
</select>

<select id="getUser" parameterType="map" resultType="User">
SELECT
id,
name,
password,
create_date
FROM t_user
<where>
<if test="id != null">
id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
<if test="password != null">
AND password = #{password}
</if>
</where>
</select>

<select id="getUserList" resultMap="userResult">
SELECT
u.id as user_id,
u.name as user_name,
u.password,
u.create_date,
r.id as role_id,
r.name as role_name,
r.description
FROM t_user u
LEFT JOIN t_user_role ur ON(u.id=ur.user_id)
LEFT JOIN t_role r ON(r.id=ur.role_id)
</select>

<resultMap id="userResult" type="User">
<id property="id" column="user_id" />
<result property="name" column="user_name"/>
<result property="createDate" column="create_date"/>
<collection property="roles" ofType="Role">
<id property="id" column="role_id"/>
<result property="name" column="role_name"/>
</collection>
</resultMap>

<insert id="insertUser" parameterType="User" >
INSERT INTO t_user (id,name, password, create_date)
VALUES (#{id},#{name}, #{password}, #{createDate,jdbcType=TIMESTAMP})
</insert>

<insert id="insertUserRole" parameterType="map">
INSERT INTO t_user_role (user_id,role_id)
VALUES (#{user_id}, #{role_id})
</insert>

<update id="updateUser" parameterType="User">
UPDATE t_user
<set>
<if test="name != null">name=#{name},</if>
<if test="password != null">password=#{password}</if>
</set>
WHERE id=#{id}
</update>

<update id="updateUserRole" parameterType="map">
UPDATE t_user_role SET
role_id=#{role_id}
WHERE user_id=#{user_id}
</update>

<delete id="deleteUser" parameterType="map">
DELETE FROM t_user WHERE id=#{id}
</delete>

<delete id="deleteUserRole" parameterType="map">
DELETE FROM t_user_role WHERE user_id=#{user_id}
</delete>

<update id="changeUserPassword" parameterType="map">
UPDATE t_user SET password=#{newPassword} WHERE id=#{id}
</update>

</mapper>

这里特别说明下xml配置中的"[b]<cache />[/b]"缓存配置项,如果开启了缓存(这里就开启了),需要注意数据的刷新问题;我之前的菜单模块,就开启了缓存机制,导致角色变更后,菜单权限没相应变化,这就是缓存导致的。

[b]service层[/b]
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
/**
* 获取主键id
* @return
*/
public Long getId() {
return userMapper.getId();
}
/**
* 登录验证
* @param param
* @return
*/
public User login(Map<String,Object> param) {
return userMapper.login(param);
}
/**
* 获取某个用户
* @param param
* @return
*/
public User getUser(Map<String,Object> param) {
return userMapper.getUser(param);
}
/**
* 获取用户列表
* @return
*/
public List<User> getUserList() {
return userMapper.getUserList();
}
/**
* 新增用户
* @param user
* @param param
*/
@Transactional
public void insertUser(User user,Map<String,Object> param) {
//新增用户
userMapper.insertUser(user);
String roleList = (String)param.get("roleList");
if(!"".equals(roleList)) {
//新增用户角色关联
insertUserRole(param);
}
}
/**
* 编辑用户
* @param user
* @param param
*/
@Transactional
public void updateUser(User user,Map<String,Object> param) {
//编辑用户
userMapper.updateUser(user);
//删除原有的用户角色关联
userMapper.deleteUserRole(param);
//新增用户角色关联
insertUserRole(param);
}
/**
* 删除用户
* @param param
*/
@Transactional
public void deleteUser(Map<String,Object> param) {
String ids = (String)param.get("ids");
String[] idsArray = ids.split(",");
for(int i=0;i<idsArray.length;i++) {
param.put("id", idsArray[i]);
param.put("user_id", idsArray[i]);
userMapper.deleteUser(param);
userMapper.deleteUserRole(param);
}
}
/**
* 用户角色关联
* @param param
*/
private void insertUserRole(Map<String,Object> param) {
String roleList = (String)param.get("roleList");
String[] roleArray = roleList.split(",");
for(int i=0;i<roleArray.length;i++) {
param.put("role_id", roleArray[i]);
userMapper.insertUserRole(param);
}
}
/**
* 修改密码
* @param param
*/
public void changeUserPassword(Map<String,Object> param) {
userMapper.changeUserPassword(param);
}
}


[b]controller层[/b]
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private MenuService menuService;
/**
* 登录验证
* @param request
* @param response
* @param user
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
public @ResponseBody Map<String,String> loginCheck(HttpServletRequest request,
HttpServletResponse response){
//spring会利用jackson自动将返回值封装成JSON对象
Map<String,String> responseMap = new HashMap<String,String>();
String captcha = request.getParameter("captcha");
String name = request.getParameter("name");
String password = request.getParameter("password");
String vcode = (String)request.getSession().getAttribute("vcode");
if(vcode==null || !captcha.equals(vcode)) {
responseMap.put("success", "false");
responseMap.put("info", "验证码错误!");
return responseMap;
}
try {
Map<String,Object> param = new HashMap<String,Object>();
param.put("name", name);
param.put("password", password);
User user = userService.login(param);
if(user!=null) {
responseMap.put("success", "true");
responseMap.put("info", "登录成功!");
request.getSession().setAttribute("user", user);
request.getSession().setAttribute("loginUserName", user.getName());
return responseMap;
}else {
responseMap.put("success", "false");
responseMap.put("info", "用户名或密码错误!");
return responseMap;
}
}catch(Exception e) {
e.printStackTrace();
responseMap.put("info", e.getClass()+":"+e.getMessage());
return responseMap;
}
}

/**
* 获取所有菜单
* @param request
* @param response
* @return
*/
@RequestMapping(value="/menus",method=RequestMethod.POST)
public @ResponseBody Map<String,Object> getMenus(HttpServletRequest request,
HttpServletResponse response){
Map<String,Object> responseMap = new HashMap<String,Object>();
User user = (User)request.getSession().getAttribute("user");
List<Menu> list = menuService.getMenuListByUserId(user.getId());
responseMap.put("success", "true");
responseMap.put("data", list);
return responseMap;
}

/**
* 获取用户列表
* @param request
* @param response
* @return
*/
@RequestMapping(value="/users",method=RequestMethod.POST)
public @ResponseBody Map<String,Object> getUsers(HttpServletRequest request,
HttpServletResponse response){
Map<String,Object> responseMap = new HashMap<String,Object>();
List<User> userList = userService.getUserList();
responseMap.put("totalCount", userList.size());
responseMap.put("rows", userList);
return responseMap;
}

/**
* 保存用户信息(新增用户or编辑用户)
* @param request
* @param response
* @param user
* @return
*/
@RequestMapping(value="/save",method=RequestMethod.POST)
public @ResponseBody Map<String,Object> saveOrUpdate(HttpServletRequest request,
HttpServletResponse response){
Map<String,Object> responseMap = new HashMap<String,Object>();
String id = request.getParameter("id");
String name = request.getParameter("name");
String password = request.getParameter("password");
String roleList = request.getParameter("roleList");
try {
//编辑用户信息
if(!"".equals(id)) {
Map<String,Object> param = new HashMap<String,Object>();
param.put("id", id);
User user = userService.getUser(param);
user.setName(name);
//表示修改了密码
if(!"".equals(password)) {
user.setPassword(password);
}
param.put("user_id", id);
param.put("roleList", roleList);
userService.updateUser(user, param);
responseMap.put("success", "true");
responseMap.put("info", "编辑成功!");
}
//新增用户信息
else {
User user = new User();
Long newId = userService.getId();
user.setId(newId);
user.setCreateDate(new Date());
user.setName(name);
user.setPassword(password);
Map<String,Object> param = new HashMap<String,Object>();
param.put("user_id", newId);
param.put("roleList", roleList);
userService.insertUser(user, param);
responseMap.put("method", "Create");
responseMap.put("success", "true");
responseMap.put("info", "新增成功!");
}
return responseMap;
}catch(Exception e) {
e.printStackTrace();
responseMap.put("info", e.getClass()+":"+e.getMessage());
return responseMap;
}
}
/**
* 删除用户
* @param request
* @param response
* @return
*/
@RequestMapping(value="/remove",method=RequestMethod.POST)
public @ResponseBody Map<String,Object> remove(HttpServletRequest request,
HttpServletResponse response){
Map<String,Object> responseMap = new HashMap<String,Object>();
String ids = request.getParameter("ids");
Map<String,Object> param = new HashMap<String,Object>();
param.put("ids", ids);
try {
userService.deleteUser(param);
responseMap.put("success", "true");
responseMap.put("info", "删除成功!");
return responseMap;
}catch(Exception e) {
e.printStackTrace();
responseMap.put("info", e.getClass()+":"+e.getMessage());
return responseMap;
}
}
/**
* 修改密码
* @param request
* @param response
* @return
*/
@RequestMapping(value="/changePassword",method=RequestMethod.POST)
public @ResponseBody Map<String,Object> changePassword(HttpServletRequest request,
HttpServletResponse response){
Map<String,Object> responseMap = new HashMap<String,Object>();
String oldPassword = request.getParameter("oldPassword");
String newPassword = request.getParameter("newPassword");
User user =(User)request.getSession().getAttribute("user");
try {
//验证通过,允许修改密码
if(oldPassword.equals(user.getPassword())) {
Map<String,Object> param = new HashMap<String,Object>();
param.put("id", user.getId());
param.put("newPassword", newPassword);
userService.changeUserPassword(param);
user.setPassword(newPassword);
//更新session中的user密码信息
request.getSession().setAttribute("user", user);
responseMap.put("success", "true");
responseMap.put("info", "修改密码成功!");
}else {
responseMap.put("success", "false");
responseMap.put("info", "原密码错误!");
}
return responseMap;
}catch(Exception e) {
e.printStackTrace();
responseMap.put("info", e.getClass()+":"+e.getMessage());
return responseMap;
}
}
}

好了,一个完整的人员管理模块就完成了,测试下模块功能吧。
……

到了这里,是不是发现少了点什么?
没错,还缺少角色菜单管理,那么继续下篇预告吧:Spring3MVC+MyBatis+ExtJs3整合开发系列之四:角色管理模块。

[color=orange][b]源码地址:http://code.google.com/p/kika/[/b][/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值