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

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


     hi,boys and girls,i come back again! 

    承接上篇: Spring3MVC+MyBatis+ExtJs3整合开发系列之二:菜单模块 ,这次带来了Spring3MVC+MyBatis+ExtJs3整合开发系列之第三篇:人员管理模块。 
    
    这次改动比较大,下面是模块结构图,总算把之前搭建的package都填满了: 

 

界面预览 : 

人员管理模块主界面: 
 

新增/修改人员信息界面: 
 

修改密码界面: 
 

代码预览 : 

persistence层
Java代码   收藏代码
  1. public interface UserMapper {  
  2.     Long getId();  
  3.     User login(Map<String,Object> param);  
  4.     User getUser(Map<String,Object> param);  
  5.     List<User> getUserList();  
  6.     void insertUser(User user);  
  7.     void insertUserRole(Map<String,Object> param);  
  8.     void updateUser(User user);  
  9.     void updateUserRole(Map<String,Object> param);  
  10.     void deleteUser(Map<String,Object> param);  
  11.     void deleteUserRole(Map<String,Object> param);  
  12.     void changeUserPassword(Map<String,Object> param);  
  13. }  

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4.   
  5. <mapper namespace="com.kimho.user.persistence.UserMapper">  
  6.   
  7.   <cache />  
  8.     
  9.   <select id="getId" resultType="long">  
  10.     SELECT max(id)+1 FROM t_user  
  11.   </select>  
  12.     
  13.   <select id="login" parameterType="map" resultType="User">  
  14.     SELECT  
  15.         id,  
  16.         name,  
  17.         password,  
  18.         create_date  
  19.     FROM t_user  
  20.     WHERE name = #{name} AND password = #{password}  
  21.   </select>  
  22.   
  23.   <select id="getUser" parameterType="map" resultType="User">  
  24.     SELECT  
  25.         id,  
  26.         name,  
  27.         password,  
  28.         create_date  
  29.     FROM t_user  
  30.     <where>  
  31.         <if test="id != null">  
  32.             id = #{id}  
  33.         </if>  
  34.         <if test="name != null">  
  35.             AND name = #{name}  
  36.         </if>  
  37.         <if test="password != null">  
  38.             AND password = #{password}  
  39.         </if>  
  40.     </where>  
  41.   </select>  
  42.     
  43.   <select id="getUserList" resultMap="userResult">  
  44.     SELECT  
  45.         u.id as user_id,  
  46.         u.name as user_name,  
  47.         u.password,  
  48.         u.create_date,  
  49.         r.id as role_id,  
  50.         r.name as role_name,  
  51.         r.description  
  52.     FROM t_user u  
  53.     LEFT JOIN t_user_role ur ON(u.id=ur.user_id)  
  54.     LEFT JOIN t_role r ON(r.id=ur.role_id)  
  55.   </select>  
  56.     
  57.   <resultMap id="userResult"  type="User">   
  58.         <id property="id"  column="user_id" />  
  59.         <result property="name" column="user_name"/>  
  60.         <result property="createDate" column="create_date"/>  
  61.         <collection property="roles"  ofType="Role">   
  62.             <id property="id"  column="role_id"/>   
  63.             <result property="name"  column="role_name"/>  
  64.         </collection>   
  65.   </resultMap>  
  66.     
  67.   <insert id="insertUser" parameterType="User" >  
  68.     INSERT INTO t_user (id,name, password, create_date)  
  69.     VALUES (#{id},#{name}, #{password}, #{createDate,jdbcType=TIMESTAMP})  
  70.   </insert>  
  71.     
  72.   <insert id="insertUserRole" parameterType="map">  
  73.     INSERT INTO t_user_role (user_id,role_id)  
  74.     VALUES (#{user_id}, #{role_id})  
  75.   </insert>  
  76.     
  77.   <update id="updateUser"  parameterType="User">   
  78.     UPDATE t_user  
  79.     <set>   
  80.         <if test="name != null">name=#{name},</if>   
  81.         <if test="password != null">password=#{password}</if>  
  82.     </set>  
  83.     WHERE id=#{id}   
  84.   </update>  
  85.     
  86.   <update id="updateUserRole"  parameterType="map">   
  87.     UPDATE t_user_role SET  
  88.     role_id=#{role_id}  
  89.     WHERE user_id=#{user_id}  
  90.   </update>  
  91.     
  92.   <delete id="deleteUser"  parameterType="map">  
  93.     DELETE FROM t_user WHERE id=#{id}  
  94.   </delete>  
  95.     
  96.   <delete id="deleteUserRole"  parameterType="map">  
  97.     DELETE FROM t_user_role WHERE user_id=#{user_id}  
  98.   </delete>  
  99.     
  100.   <update id="changeUserPassword"  parameterType="map">   
  101.     UPDATE t_user SET password=#{newPassword} WHERE id=#{id}  
  102.   </update>  
  103.     
  104. </mapper>  

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

service层  
Java代码   收藏代码
  1. @Service  
  2. public class UserService {  
  3.     @Autowired  
  4.     private UserMapper userMapper;  
  5.     /** 
  6.      * 获取主键id 
  7.      * @return 
  8.      */  
  9.     public Long getId() {  
  10.         return userMapper.getId();  
  11.     }  
  12.     /** 
  13.      * 登录验证 
  14.      * @param param 
  15.      * @return 
  16.      */  
  17.     public User login(Map<String,Object> param) {  
  18.         return userMapper.login(param);  
  19.     }  
  20.     /** 
  21.      * 获取某个用户 
  22.      * @param param 
  23.      * @return 
  24.      */  
  25.     public User getUser(Map<String,Object> param) {  
  26.         return userMapper.getUser(param);  
  27.     }  
  28.     /** 
  29.      * 获取用户列表 
  30.      * @return 
  31.      */  
  32.     public List<User> getUserList() {  
  33.         return userMapper.getUserList();  
  34.     }  
  35.     /** 
  36.      * 新增用户 
  37.      * @param user 
  38.      * @param param 
  39.      */  
  40.     @Transactional  
  41.     public void insertUser(User user,Map<String,Object> param) {  
  42.         //新增用户  
  43.         userMapper.insertUser(user);  
  44.         String roleList = (String)param.get("roleList");  
  45.         if(!"".equals(roleList)) {  
  46.             //新增用户角色关联  
  47.             insertUserRole(param);  
  48.         }  
  49.     }  
  50.     /** 
  51.      * 编辑用户 
  52.      * @param user 
  53.      * @param param 
  54.      */  
  55.     @Transactional  
  56.     public void updateUser(User user,Map<String,Object> param) {  
  57.         //编辑用户  
  58.         userMapper.updateUser(user);  
  59.         //删除原有的用户角色关联  
  60.         userMapper.deleteUserRole(param);  
  61.         //新增用户角色关联  
  62.         insertUserRole(param);  
  63.     }  
  64.     /** 
  65.      * 删除用户 
  66.      * @param param 
  67.      */  
  68.     @Transactional  
  69.     public void deleteUser(Map<String,Object> param) {  
  70.         String ids = (String)param.get("ids");  
  71.         String[] idsArray = ids.split(",");  
  72.         for(int i=0;i<idsArray.length;i++) {  
  73.             param.put("id", idsArray[i]);  
  74.             param.put("user_id", idsArray[i]);  
  75.             userMapper.deleteUser(param);  
  76.             userMapper.deleteUserRole(param);  
  77.         }  
  78.     }  
  79.     /** 
  80.      * 用户角色关联 
  81.      * @param param 
  82.      */  
  83.     private void insertUserRole(Map<String,Object> param) {  
  84.         String roleList = (String)param.get("roleList");  
  85.         String[] roleArray = roleList.split(",");  
  86.         for(int i=0;i<roleArray.length;i++) {  
  87.             param.put("role_id", roleArray[i]);  
  88.             userMapper.insertUserRole(param);  
  89.         }  
  90.     }  
  91.     /** 
  92.      * 修改密码 
  93.      * @param param 
  94.      */  
  95.     public void changeUserPassword(Map<String,Object> param) {  
  96.         userMapper.changeUserPassword(param);  
  97.     }  
  98. }  


controller层  
Java代码   收藏代码
  1. @Controller  
  2. @RequestMapping("/user")  
  3. public class UserController {  
  4.     @Autowired  
  5.     private UserService userService;  
  6.     @Autowired  
  7.     private MenuService menuService;  
  8.     /** 
  9.      * 登录验证 
  10.      * @param request 
  11.      * @param response 
  12.      * @param user 
  13.      * @return 
  14.      */  
  15.     @RequestMapping(value="/login",method=RequestMethod.POST)  
  16.     public @ResponseBody Map<String,String> loginCheck(HttpServletRequest request,     
  17.             HttpServletResponse response){  
  18.         //spring会利用jackson自动将返回值封装成JSON对象  
  19.         Map<String,String> responseMap = new HashMap<String,String>();  
  20.         String captcha = request.getParameter("captcha");  
  21.         String name = request.getParameter("name");  
  22.         String password = request.getParameter("password");  
  23.         String vcode = (String)request.getSession().getAttribute("vcode");  
  24.         if(vcode==null || !captcha.equals(vcode)) {  
  25.             responseMap.put("success""false");  
  26.             responseMap.put("info""验证码错误!");  
  27.             return responseMap;  
  28.         }  
  29.         try {  
  30.             Map<String,Object> param = new HashMap<String,Object>();  
  31.             param.put("name", name);  
  32.             param.put("password", password);  
  33.             User user = userService.login(param);  
  34.             if(user!=null) {  
  35.                 responseMap.put("success""true");  
  36.                 responseMap.put("info""登录成功!");  
  37.                 request.getSession().setAttribute("user", user);   
  38.                 request.getSession().setAttribute("loginUserName", user.getName());   
  39.                 return responseMap;  
  40.             }else {  
  41.                 responseMap.put("success""false");  
  42.                 responseMap.put("info""用户名或密码错误!");  
  43.                 return responseMap;  
  44.             }  
  45.         }catch(Exception e) {  
  46.             e.printStackTrace();  
  47.             responseMap.put("info", e.getClass()+":"+e.getMessage());  
  48.             return responseMap;  
  49.         }  
  50.     }  
  51.       
  52.     /** 
  53.      * 获取所有菜单 
  54.      * @param request 
  55.      * @param response 
  56.      * @return 
  57.      */  
  58.     @RequestMapping(value="/menus",method=RequestMethod.POST)  
  59.     public @ResponseBody Map<String,Object> getMenus(HttpServletRequest request,     
  60.             HttpServletResponse response){  
  61.         Map<String,Object> responseMap = new HashMap<String,Object>();  
  62.         User user = (User)request.getSession().getAttribute("user");  
  63.         List<Menu> list = menuService.getMenuListByUserId(user.getId());  
  64.         responseMap.put("success""true");  
  65.         responseMap.put("data", list);  
  66.         return responseMap;  
  67.     }  
  68.       
  69.     /** 
  70.      * 获取用户列表 
  71.      * @param request 
  72.      * @param response 
  73.      * @return 
  74.      */  
  75.     @RequestMapping(value="/users",method=RequestMethod.POST)  
  76.     public @ResponseBody Map<String,Object> getUsers(HttpServletRequest request,     
  77.             HttpServletResponse response){  
  78.         Map<String,Object> responseMap = new HashMap<String,Object>();  
  79.         List<User> userList = userService.getUserList();  
  80.         responseMap.put("totalCount", userList.size());  
  81.         responseMap.put("rows", userList);  
  82.         return responseMap;  
  83.     }  
  84.       
  85.     /** 
  86.      * 保存用户信息(新增用户or编辑用户) 
  87.      * @param request 
  88.      * @param response 
  89.      * @param user 
  90.      * @return 
  91.      */  
  92.     @RequestMapping(value="/save",method=RequestMethod.POST)  
  93.     public @ResponseBody Map<String,Object> saveOrUpdate(HttpServletRequest request,     
  94.             HttpServletResponse response){  
  95.         Map<String,Object> responseMap = new HashMap<String,Object>();  
  96.         String id = request.getParameter("id");  
  97.         String name = request.getParameter("name");  
  98.         String password = request.getParameter("password");  
  99.         String roleList = request.getParameter("roleList");  
  100.         try {  
  101.             //编辑用户信息  
  102.             if(!"".equals(id)) {  
  103.                 Map<String,Object> param = new HashMap<String,Object>();  
  104.                 param.put("id", id);  
  105.                 User user = userService.getUser(param);  
  106.                 user.setName(name);  
  107.                 //表示修改了密码  
  108.                 if(!"".equals(password)) {  
  109.                     user.setPassword(password);  
  110.                 }  
  111.                 param.put("user_id", id);  
  112.                 param.put("roleList", roleList);  
  113.                 userService.updateUser(user, param);  
  114.                 responseMap.put("success""true");  
  115.                 responseMap.put("info""编辑成功!");  
  116.             }  
  117.             //新增用户信息  
  118.             else {  
  119.                 User user = new User();  
  120.                 Long newId = userService.getId();  
  121.                 user.setId(newId);  
  122.                 user.setCreateDate(new Date());  
  123.                 user.setName(name);  
  124.                 user.setPassword(password);  
  125.                 Map<String,Object> param = new HashMap<String,Object>();  
  126.                 param.put("user_id", newId);  
  127.                 param.put("roleList", roleList);  
  128.                 userService.insertUser(user, param);  
  129.                 responseMap.put("method""Create");  
  130.                 responseMap.put("success""true");  
  131.                 responseMap.put("info""新增成功!");  
  132.             }  
  133.             return responseMap;  
  134.         }catch(Exception e) {  
  135.             e.printStackTrace();  
  136.             responseMap.put("info", e.getClass()+":"+e.getMessage());  
  137.             return responseMap;  
  138.         }  
  139.     }  
  140.     /** 
  141.      * 删除用户 
  142.      * @param request 
  143.      * @param response 
  144.      * @return 
  145.      */  
  146.     @RequestMapping(value="/remove",method=RequestMethod.POST)  
  147.     public @ResponseBody Map<String,Object> remove(HttpServletRequest request,     
  148.             HttpServletResponse response){  
  149.         Map<String,Object> responseMap = new HashMap<String,Object>();  
  150.         String ids = request.getParameter("ids");  
  151.         Map<String,Object> param = new HashMap<String,Object>();  
  152.         param.put("ids", ids);  
  153.         try {  
  154.             userService.deleteUser(param);  
  155.             responseMap.put("success""true");  
  156.             responseMap.put("info""删除成功!");  
  157.             return responseMap;  
  158.         }catch(Exception e) {  
  159.             e.printStackTrace();  
  160.             responseMap.put("info", e.getClass()+":"+e.getMessage());  
  161.             return responseMap;  
  162.         }  
  163.     }  
  164.     /** 
  165.      * 修改密码 
  166.      * @param request 
  167.      * @param response 
  168.      * @return 
  169.      */  
  170.     @RequestMapping(value="/changePassword",method=RequestMethod.POST)  
  171.     public @ResponseBody Map<String,Object> changePassword(HttpServletRequest request,     
  172.             HttpServletResponse response){  
  173.         Map<String,Object> responseMap = new HashMap<String,Object>();  
  174.         String oldPassword = request.getParameter("oldPassword");  
  175.         String newPassword = request.getParameter("newPassword");  
  176.         User user =(User)request.getSession().getAttribute("user");  
  177.         try {  
  178.             //验证通过,允许修改密码  
  179.             if(oldPassword.equals(user.getPassword())) {  
  180.                 Map<String,Object> param = new HashMap<String,Object>();  
  181.                 param.put("id", user.getId());  
  182.                 param.put("newPassword", newPassword);  
  183.                 userService.changeUserPassword(param);  
  184.                 user.setPassword(newPassword);  
  185.                 //更新session中的user密码信息  
  186.                 request.getSession().setAttribute("user", user);  
  187.                 responseMap.put("success""true");  
  188.                 responseMap.put("info""修改密码成功!");  
  189.             }else {  
  190.                 responseMap.put("success""false");  
  191.                 responseMap.put("info""原密码错误!");  
  192.             }  
  193.             return responseMap;  
  194.         }catch(Exception e) {  
  195.             e.printStackTrace();  
  196.             responseMap.put("info", e.getClass()+":"+e.getMessage());  
  197.             return responseMap;  
  198.         }  
  199.     }  
  200. }  

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值