环境
- 表
tb_user
中有三个字段:id
(自增),username
,password
bean
下已有User
,PageInfo
类Tomcat 9.0
MySql 5.0.67
新建Role和UserRole类
在bean下新建Role
和UserRole
类
//Role
public class Role {
private int id;
private String rolename;
private String roledesc;
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 getRoledesc() {
return roledesc;
}
public void setRoledesc(String roledesc) {
this.roledesc = roledesc;
}
@Override
public String toString() {
return "Role{" +
"id=" + id +
", rolename='" + rolename + '\'' +
", roledesc='" + roledesc + '\'' +
'}';
}
}
//UserRole
public class UserRole {
public UserRole() {
}
public UserRole(int id, int userId, int roleId) {
this.id = id;
this.userId = userId;
this.roleId = roleId;
}
private int id;
private int userId;
private int roleId;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
@Override
public String toString() {
return "Role{" +
"id=" + id +
", userId=" + userId +
", roleId=" + roleId +
'}';
}
}
UserController
@RequestMapping("toAddRole.do")
public ModelAndView toAddRole(int id){
List<Role> roleList=roleService.findRoleByUserId(id);
ModelAndView mv=new ModelAndView();
mv.addObject("roles",roleList);
mv.addObject("id",id);
mv.setViewName("user-role-add");
return mv;
}
@RequestMapping("addRole.do")
@ResponseBody
public String add(String roleList,String userId){
String[] strs = roleList.split(",");
List<Integer> ids=new ArrayList<>();
for(String s:strs){
ids.add(Integer.parseInt(s));
}
roleService.add(ids,userId);
return "";
}
Dao层
public interface RoleDao {
List<Integer> findRoleIdByUserId(int userId);
List<Role> findRoleByUserId(int id);
void addRole(UserRole userRole);
}
Service层
//IRoleService
public interface IRoleService {
List<Integer> findRoleId(int userId);
List<Role> findRoleByUserId(int id);
void add(List<Integer> ids, String userId);
}
//RoleService
@Service
public class RoleService implements IRoleService {
@Autowired
private RoleDao roleDao;
@Override
public List<Integer> findRoleId(int userId) {
return roleDao.findRoleIdByUserId(userId);
}
@Override
public List<Role> findRoleByUserId(int id) {
return roleDao.findRoleByUserId(id);
}
@Override
public void add(List<Integer> ids, String userId) {
for(int roleId:ids){
UserRole userRole=new UserRole();
userRole.setUserId(Integer.parseInt(userId));
userRole.setRoleId(roleId);
roleDao.addRole(userRole);
}
}
}
Mapper.xml
<select id="findRoleIdByUserId" parameterType="int" resultType="int">
select roleId from user_role where userId=#{userId}
</select>
<select id="findRoleByUserId" parameterType="int" resultType="role">
SELECT * FROM tb_role WHERE id NOT IN (SELECT roleId FROM user_role WHERE userId=#{id})
</select>
<insert id="addRole" parameterType="userRole">
insert into user_role (userId,roleId) values (#{userId},#{roleId})
</insert>
JSP主要代码
<form action="" method="post">
<!-- 正文区域 -->
<section class="content">
<input type="hidden" name="userId" value="${id}">
<table id="dataList"
class="table table-bordered table-striped table-hover dataTable">
<thead>
<tr>
<th class="" style="padding-right: 0px">
<input id="selall"
type="checkbox" class="icheckbox_square-blue"></th>
<th class="sorting_asc">ID</th>
<th class="sorting">角色名称</th>
<th class="sorting">角色描述</th>
</tr>
</thead>
<tbody>
<c:forEach items="${roles}" var="role">
<tr>
<td>
<input name="roleId" type="checkbox" value="${role.id}">
</td>
<td>${role.id}</td>
<td>${role.rolename }</td>
<td>${role.roledesc}</td>
</tr>
</c:forEach>
</tbody>
</table>
<!--订单信息/--> <!--工具栏-->
<div class="box-tools text-center">
<button type="button" class="btn bg-maroon" onclick="addRoles()">保存</button>
<button type="button" class="btn bg-default"
onclick="history.back(-1);">返回
</button>
</div>
<!--工具栏/--> </section>
<!-- 正文区域 /-->
</form>
function addRoles() {
var roleList = new Array();
$("input[name='roleId']:checked").each(
function () {
roleList.push($(this).val())
}
);
var userId = $("input[name=userId]").val();
alert(roleList);
alert(userId);
$.ajax({
type: "post",
url: "${pageContext.request.contextPath}/user/addRole.do",
data: {roleList: roleList.toString(), userId: userId},
success: function () {
alert("添加角色成功");
location.href = "${pageContext.request.contextPath}/user/findAll.do";
},
error: function () {
alert("添加角色失败");
}
});
}