(7.6-7.7
然后就是完善之前做出来的项目!
要先导入一个添加用户的新页面 user-role-add.jsp
首先改写UserController的@RequestMapping("/login.do")
@RequestMapping("/login.do")
public ModelAndView login(User user, HttpSession session){
int id = userService.login(user.getUsername(), user.getPassword());
ModelAndView modelAndView=new ModelAndView();
if(id != -1){
List<Integer> roleIds = roleService.findRoleId(id);
session.setAttribute("roleIds",roleIds);
session.setAttribute("user",user);
modelAndView.setViewName("main");
}else {
modelAndView.setViewName("../failer");
}
return modelAndView;
}
然后在bean工厂里新建Role类
public class Role {
private int id;
private String roleName;
private String roleEsc;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleEsc() {
return roleEsc;
}
public void setRoleEsc(String roleEsc) {
this.roleEsc = roleEsc;
}
@Override
public String toString() {
return "Role{" +
"id=" + id +
", roleName='" + roleName + '\'' +
", roleEsc='" + roleEsc + '\'' +
'}';
}
}
改写接口IUserService和它的实现类
public interface IUserService {
int login(String username,String password);
PageInfo<User> findAll(int currentPage,String username);
void deleteById(int id);
void add(User user);
User selectUserById(int id);
void update(User user);
void deleteAll(List<Integer> ids);
}
@Service
public class UserService implements IUserService {
@Autowired
private UserDao userDao;
@Override
public int login(String username, String password) {
User user = userDao.findUserByUserName(username);
if (user!=null && user.getPassword().equals(password)){
return user.getId();
}
return -1;
}
@Override
public PageInfo<User> findAll(int currentPage,String username) {
PageInfo<User> pageInfo=new PageInfo<>();
pageInfo.setSize(5);
int tc=userDao.getTotalCount(username);
pageInfo.setTotalCount(tc);
int tp=(int)Math.ceil(tc/5.0);
pageInfo.setTotalPage(tp);
if(currentPage<1){
pageInfo.setCurrentPage(1);
}else if(currentPage>tp && tp != 0){
pageInfo.setCurrentPage(tp);
}else {
pageInfo.setCurrentPage(currentPage);
}
System.out.println(pageInfo.getCurrentPage());
//0,5,10
int start=(pageInfo.getCurrentPage()-1)*5;
List<User> userList = userDao.findAll(start,username);
pageInfo.setList(userList);
return pageInfo;
}
/*@Override
public List<User> findAll() {
return userDao.findAll();
}*/
@Override
public void deleteById(int id) {
userDao.deleteById(id);
}
@Override
public void add(User user) {
userDao.add(user);
}
@Override
public User selectUserById(int id) {
return userDao.selectById(id);
}
@Override
public void update(User user) {
userDao.update(user);
}
@Override
public void deleteAll(List<Integer> ids) {
userDao.deleteAll(ids);
}
}
新建Roledao
public interface RoleDao {
List<Integer> findRoleIdByUserId(int userId);
List<Role> findRoleNotInUserId(int id);
}
新建RoleMapper
<?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.zhongruan.dao.RoleDao" >
<select id="findRoleIdByUserId" parameterType="int" resultType="int">
select roleId from user_role where userId=#{userId}
</select>
新建IRoleService
public interface IRoleService {
List<Integer> findRoleId(int userId);
List<Role> findRoleNotInUserId(int id);
}
别忘记还有它的实现类
@Service
public class RoleService implements IRoleService {
@Autowired
private RoleDao roleDao;
@Override
public List<Integer> findRoleId(int userId) {
return roleDao.findRoleIdByUserId(userId);
}
}
在UserController里自动注入roleService
@Autowired
private IRoleService roleService;
改写前端
改写user-list.jsp
<a href="${pageContext.request.contextPath}/user/toAddRole.do?id=${user.id}" class="btn bg-olive btn-xs">添加角色</a>
//改写herf已跳到正确的路径
然后又是后端ψ(`∇´)ψ
添加 @RequestMapping(“toAddRole.do”)
@RequestMapping("toAddRole.do")
public ModelAndView toAddRole(int id){
List<Role> roleList = roleService.findRoleNotInUserId(id);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("roles", roleList);
modelAndView.setViewName("user-role-add");
return modelAndView;
}
在RoleService里重写findRoleNotInUserId
@Override
public List<Role> findRoleNotInUserId(int id) {
return roleDao.findRoleNotInUserId(id);
}
然后在RoleMapper里面写上对应的sql语句
<select id="findRoleNotInUserId" parameterType="int" resultType="role">
SELECT * FROM tb_role WHERE id NOT IN (SELECT roleId FROM user_role WHERE userId=#{id})
</select>
</mapper>
然后就没有然后了
结束了