设为首页 收藏本站
查看: 1103|回复: 0

[经验分享] Spring3MVC+MyBatis+ExtJs3整合开发系列之三:人员管理模块

[复制链接]

尚未签到

发表于 2016-11-27 12:45:36 | 显示全部楼层 |阅读模式
DSC0000.gif hi,boys and girls,i come back again!
    承接上篇:Spring3MVC+MyBatis+ExtJs3整合开发系列之二:菜单模块,这次带来了Spring3MVC+MyBatis+ExtJs3整合开发系列之第三篇:人员管理模块。
    这次改动比较大,下面是模块结构图,总算把之前搭建的package都填满了:
DSC0001.jpg
界面预览
人员管理模块主界面:
DSC0002.jpg
新增/修改人员信息界面:
DSC0003.jpg
修改密码界面:
DSC0004.jpg
代码预览
persistence层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配置中的"<cache />"缓存配置项,如果开启了缓存(这里就开启了),需要注意数据的刷新问题;我之前的菜单模块,就开启了缓存机制,导致角色变更后,菜单权限没相应变化,这就是缓存导致的。
service层
@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);
param.put("user_id", idsArray);
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);
userMapper.insertUserRole(param);
}
}
/**
* 修改密码
* @param param
*/
public void changeUserPassword(Map<String,Object> param) {
userMapper.changeUserPassword(param);
}
}

controller层
@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整合开发系列之四:角色管理模块。
源码地址:http://code.google.com/p/kika/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306236-1-1.html 上篇帖子: MyBatis(三)、SQL语句映射文件(1)resultMap 下篇帖子: mybatis 多数据源 以及 多数据源切换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表