一、创建持久化类
Role
package com.ssm.po;
import java.util.List;
public class Role {
private Integer roleId;
private String roleName;
private List<User> userList;
@Override
public String toString() {
return "Role{" +
"roleId=" + roleId +
", roleName='" + roleName + '\'' +
", userList=" + userList +
'}';
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
User
package com.ssm.po;
import java.util.Date;
public class User {
private Integer userId;
private String userName;
private String loginName;
private String password;
private String tel;
private Date registerTime;
private String status;
private Integer roleId;
private String roleName;
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", loginName='" + loginName + '\'' +
", password='" + password + '\'' +
", tel='" + tel + '\'' +
", registerTime=" + registerTime +
", status='" + status + '\'' +
", roleId=" + roleId +
", roleName='" + roleName + '\'' +
'}';
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public Date getRegisterTime() {
return registerTime;
}
public void setRegisterTime(Date registerTime) {
this.registerTime = registerTime;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
}
二、实现DAO
1、创建DAO层接口
RoleDao
package com.ssm.dao;
import com.ssm.po.Role;
import java.util.List;
public interface RoleDao {
public List<Role> selectRoleList();
}
UserDao
package com.ssm.dao;
import com.ssm.po.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserDao {
// 查询所有用户
public List<User> selectUserList(@Param("keywords") String keywords,@Param("userListRoleId")Integer userListRoleId);
// 通过账号密码查询
public User findUser(@Param("loginName")String loginName,@Param("password") String password);
// 通过用户id查询
public User getUserByUserId(Integer userId);
// 通过登录名查询(判断用户名是否存)
public User getUserByLoginName(String loginName);
// 添加用户
public int addUser(User user);
// 更新用户
public int updateUser(User user);
// 删除用户
public int delUser(Integer userId);
// 设置用户状态
public int setUserStstus(User user);
}
2、在dao中创建映射文件
RoleDao.xml
<?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.ssm.dao.RoleDao">
<select id="selectRoleList" resultType="Role">
select roleId,roleName from t_role
</select>
</mapper>
UserDao.xml
<?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.ssm.dao.UserDao">
<!-- 查询所有用户集合where语句-->
<sql id="selectUserListWhere">
<where>
u.roleId=r.roleId
<if test="keywords!=null and keywords!=''">
and (u.userName like CONCAT('%',#{keywords},'%') or
u.loginName like CONCAT('%',#{keywords},'%'))
</if>
<if test="userListRoleId!=null and userListRoleId!=''">
and (u.roleId=#{userListRoleId})
</if>
</where>
</sql>
<!-- 查询所有用户集合列表-->
<select id="selectUserList" parameterType="String" resultType="User">
select u.*,r.roleName from t_user as u,t_role as r
<include refid="selectUserListWhere"/>
order by registerTime desc
</select>
<!-- 通过账号密码查询用户-->
<select id="findUser" parameterType="String" resultType="User">
select * from t_user where loginName=#{loginName} and password=#{password} limit 0,1
</select>
<!-- 通过userId查询用户-->
<select id="getUserByUserId" parameterType="Integer" resultType="User">
select * from t_user where userId=#{userId}
</select>
<!-- 通过登录账号查询用户-->
<select id="getUserByLoginName" parameterType="String" resultType="User">
select * from t_user where loginName=#{loginName} limit 0,1
</select>
<!-- 添加用户-->
<insert id="addUser" parameterType="User">
insert into t_user(
userName,loginName,password,tel,registerTime,status,roleId
)values(
#{userName},#{loginName},#{password},#{tel},#{registerTime},#{status},#{roleId}
)
</insert>
<!-- 更新用户-->
<update id="updateUser" parameterType="User">
update t_user
<set>
registerTime=#{registerTime},
status=#{status},
<if test="userName != null and userName != ''">
userName=#{userName},
</if>
<if test="password != null and password != ''">
password=#{password},
</if>
<if test="tel != null and tel != ''">
tel=#{tel},
</if>
<if test="roleId != null and roleId != ''">
roleId=#{roleId},
</if>
</set>
where userId=#{userId}
</update>
<!-- 删除用户-->
<delete id="delUser" parameterType="Integer">
delete from t_user where userId=#{userId}
</delete>
<!-- 设置用户状态-->
<update id="setUserStatus" parameterType="User">
update t_user set status=#{status} where userId=#{userId}
</update>
</mapper>
三、实现service
1、在service中创建RoleService和UserService接口
RoleService
package com.ssm.service;
import com.ssm.po.Role;
import java.util.List;
public interface RoleService {
public List<Role> findRoleList();
}
UserService
package com.ssm.service;
import com.ssm.po.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserService {
// 查询所有用户
public List<User> selectUserList(String keywords, Integer userListRoleId);
// 通过账号密码查询
public User findUser(String loginName,String password);
// 通过用户id查询
public User getUserByUserId(Integer userId);
// 通过登录名查询(判断用户名是否存)
public User getUserByLoginName(String loginName);
// 添加用户
public int addUser(User user);
// 更新用户
public int updateUser(User user);
// 删除用户
public int delUser(Integer userId);
// 设置用户状态
public int setUserStatus(User user);
}
2、创建接口实现类
RoleServiceImpl
package com.ssm.service.impl;
import com.ssm.dao.RoleDao;
import com.ssm.po.Role;
import com.ssm.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("roleService")
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleDao roleDao;
@Override
public List<Role> findRoleList() {
List<Role> roleList=roleDao.selectRoleList();
return roleList;
}
}
UserServiceImpl
package com.ssm.service.impl;
import com.ssm.dao.UserDao;
import com.ssm.po.User;
import com.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> selectUserList(String keywords, Integer userListRoleId) {
List<User> userList=this.userDao.selectUserList(keywords,userListRoleId);
return userList;
}
@Override
public User findUser(String loginName, String password) {
User user=this.userDao.findUser(loginName,password);
return user;
}
@Override
public User getUserByUserId(Integer userId) {
return this.userDao.getUserByUserId(userId);
}
@Override
public User getUserByLoginName(String loginName) {
return this.userDao.getUserByLoginName(loginName);
}
@Override
public int addUser(User user) {
return this.userDao.addUser(user);
}
@Override
public int updateUser(User user) {
return this.userDao.updateUser(user);
}
@Override
public int delUser(Integer userId) {
return this.userDao.delUser(userId);
}
@Override
public int setUserStatus(User user) {
return this.userDao.setUserStatus(user);
}
}
四、实现Controller
创建UserController
package com.ssm.web.controller;
import com.ssm.po.Role;
import com.ssm.po.User;
import com.ssm.service.RoleService;
import com.ssm.service.UserService;
import org.apache.tools.ant.taskdefs.condition.Http;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;
@Controller
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
// 查询所有状态的用户集合
@RequestMapping(value = "/findUserList.action")
public String findUserList(String keywords, Integer userListRoleId, Model model){
//获取角色列表
List<Role> roleList=roleService.findRoleList();
model.addAttribute("roleList",roleList);
//获取用户列表
List<User> userList=userService.selectUserList(keywords,userListRoleId);
model.addAttribute("userList",userList);
model.addAttribute("keywords",keywords);
model.addAttribute("userListRoleId",userListRoleId);
return "user/user_list";
}
//转向添加用户
@RequestMapping(value = "/toAddUser.action")
public String toAddUser(Model model){
List<Role> roleList=roleService.findRoleList();
model.addAttribute("roleList",roleList);
return "user/add_user";
}
//判断登录账号是否已经存在
@RequestMapping(value = "/checkLoginName.action")
@ResponseBody
public User checkLoginName(@RequestBody User user,Model model){
User checkUser= userService.getUserByLoginName(user.getLoginName());
if(checkUser!=null){
return checkUser;
}else {
checkUser=new User();
checkUser.setUserId(0);
return checkUser;
}
}
//添加用户
@RequestMapping(value = "/addUser.action",method = RequestMethod.POST)
public String addUser(User user,Model model){
//获取角色列表
List<Role> roleList=roleService.findRoleList();
model.addAttribute("roleList",roleList);
model.addAttribute("user",user);
//检查登录账号是否已存在
User checkUser=userService.getUserByLoginName(user.getLoginName());
if(checkUser!=null){
//已存在
model.addAttribute("checkUserLoginNameMsg","该账号已存在");
return "user/add_user";
}else{
Date date=new Date();
user.setRegisterTime(date);
user.setStatus("2");
int rows=userService.addUser(user);
if (rows>0){
return "redirect:findUserList.action";
}else {
return "user/add_user";
}
}
}
//转向修改用户界面
@RequestMapping(value = "/toEditUser.action")
public String editUser(User user,Model model){
//获取角色列表
Date date=new Date();
user.setRegisterTime(date);
user.setStatus("2");
int rows=userService.updateUser(user);
if (rows>0){
return "redirect:findUserList.action";
}else {
List<Role> roleList = roleService.findRoleList();
model.addAttribute("roleList",roleList);
model.addAttribute("user",user);
return "user/edit_user";
}
}
//删除用户
@RequestMapping(value = "/delUser.action")
@ResponseBody
public User delUser(@RequestBody User user,Model model){
int rows=userService.delUser(user.getUserId());
if(rows>0){
return user;
}else{
user.setUserId(0);//失败标记
return user;
}
}
//设置禁用
@RequestMapping(value = "/disableUser.action")
@ResponseBody
public User disableUser(@RequestBody User user,Model model){
int rows=userService.setUserStatus(user);
if(rows>0){
return user;
}else{
user.setUserId(0)
return user;
}
}
//启用用户
@RequestMapping(value = "/enableUser.action")
@ResponseBody
public User enableUser(@RequestBody User user,Model model){
int rows=userService.setUserStatus(user);
if(rows>0){
return user;
}else{
user.setUserId(0)
return user;
}
}
//用户登录
@RequestMapping(value = "/login.action",method = RequestMethod.POST)
public String login(String loginName, String password, Model model, HttpSession httpSession){
User user=userService.findUser(loginName, password);
if (user!=null){
if(user.getStatus().equals("2")){
httpSession.setAttribute("login_user",user);
return "main";
}else {
model.addAttribute("msg","账号未启用或禁用,请联系管理员");
return "login";
}
}
model.addAttribute("msg","账号或密码错误");
return "login";
}
//退出登录
@RequestMapping(value = "/logout.action")
public String logout(HttpSession session){
session.invalidate();;
return "login";
}
}