ssm用户角色CURD
一、配置环境
-
配置jdbc.properties
-
配置log4j.properties
-
编写映射文件(XxxxMapper.xml)
- 指定namespace
- 给实体起别名
- 编写sql语句
-
编写核心文件(sqlMapconfig)
- 用定义别名
- 配置分页助手插件
-
配置spring(applicationContext.xml)
- 组件扫描 service和mapper
- 加载properties文件
- 配置数据源信息
- 配置sessionFactory
- 加载数据源信息
- 加载mybatis核心文件
- 扫描mapper所在包 为mapper创建实现类
- 声明事务控制
- 平台事务管理器
- 配置事务增强
- 事务的aop织入
-
配置spring-mvc.xml
- 组件扫描 controller
- 配置 mvc注解驱动[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZ4Pbtc7-1648804607203)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220401111629778.png)]
- 配置内部资源视图解析器
- 开放静态资源访问权限
-
配置web.xml
- spring监听器
- springmvc的前端控制器
- 乱码过滤器
二、查询(user表)
获取参数:当前页数、显示条数
先查询所有用户的信息,并且把role的信息存入到用户实体中,接收的参数为userList;
然后通过分页助手简单查询用户的信息,但role为空,接收的参数为allUser;
最后userList中的role信息,一一对应的赋给allUser;
返回 PageInfo;
- UserController层
@ResponseBody
@RequestMapping("/findAll")
public PageInfo<User> findAll(Integer currentPage,Integer pageSize){
if (currentPage==null){
currentPage=1;
}
if (pageSize==null){
pageSize=3;
}
List<User> userList = userService.findAllByPage();
System.out.println(userList.toString());
PageHelper.startPage(currentPage,pageSize);
List<User> allUser = userService.findAllUser();
for (int i = 0; i <userList.size() ; i++) {
for (int j = 0; j < allUser.size(); j++) {
if (allUser.get(j).getId()==userList.get(i).getId()){
allUser.get(j).setRoles(userList.get(i).getRoles());
}
}
}
PageInfo<User> pageInfo=new PageInfo<User>(allUser);
return pageInfo;
}
- UserMapper.xml
<resultMap id="userMap" type="user">
<id column="id" property="id"></id>
<result column="userName" property="username"></result>
<result column="email" property="email"></result>
<result column="password" property="password"></result>
<result column="phoneNum" property="phoneNum"></result>
<collection property="roles" ofType="role">
<id column="roleId" property="id"></id>
<result column="roleName" property="roleName"></result>
<result column="roleDesc" property="roleDesc"></result>
</collection>
</resultMap>
<select id="findAllByPage" resultMap="userMap">
SELECT * FROM sys_user su left join (sys_role sr,sys_user_role sur) on su.id=sur.userId AND sur.roleId=sr.id ORDER BY su.id
</select>
<select id="findAllUser" resultType="user">
select * from sys_user
</select>
三、插入
获取用户信息和该用户的角色;
先添加用户;
查询该用户的ID;
添加该用户和角色的关系;
重定向user-list.html地址;
- Controller层
@RequestMapping("/save")
public String save(User user,Long[] roleIds){
//添加用户
userService.saveUser(user);
//查询新用户id
User new_user = userService.findOneByUnameAndPwd(user);
Long userId = new_user.getId();
//添加用户和角色关系
userService.saveUserAndRole(userId,roleIds);
return "redirect:/pages/user-list.html";
}
- UserMapper.xml
<insert id="saveUser" parameterType="user">
insert into sys_user(username,email,password,phoneNum) values (#{username},#{email},#{password},#{phoneNum})
</insert>
<select id="findOneByUnameAndPwd" parameterType="user" resultType="user">
select * from sys_user where username=#{username} and password=#{password}
</select>
<insert id="saveUserAndRole" parameterType="Long">
insert into sys_user_role(userId,roleId) values
<foreach collection="roleIds" item="roleIds" separator="," index="index" >
(#{userId},#{roleIds})
</foreach>
</insert>
四、修改
获取用户信息和该用户的角色;
修改用户表;
删除用户角色关联表;
添加用户角色关联表;
重定向user-list.html地址;
- Controller层
@RequestMapping("/update")
public String update(User user,Long[] roleIds){
//修改用户表
userService.updateUser(user);
//删除用户角色关联表
userService.deleteRoleIds(user);
//添加用户角色关联表
Long userId = user.getId();
userService.saveUserAndRole(userId,roleIds);
return "redirect:/pages/user-list.html";
}
- UserMapper.xml
<update id="updateUser" parameterType="user">
update sys_user set username=#{username} , email=#{email} ,password=#{password} ,phoneNum=#{phoneNum} where id=#{id}
</update>
<delete id="deleteRoleIds" parameterType="user">
delete from sys_user_role where userId=#{id}
</delete>
<insert id="saveUserAndRole" parameterType="Long">
insert into sys_user_role(userId,roleId) values
<foreach collection="roleIds" item="roleIds" separator="," index="index" >
(#{userId},#{roleIds})
</foreach>
</insert>
五、删除
获取id;
先删除用户角色关联表;
再删除用户;
- controller层
@RequestMapping(value = "/delete",method = RequestMethod.GET)
public String delete(@RequestParam Long id){
//必须先删关联的表再删用户表
//删除用户角色关联表
User user = new User();
user.setId(id);
System.out.println(id);
userService.deleteRoleIds(user);
//删除用户表
userService.deleteUser(id);
return "redirect:/pages/user-list.html";
}
- UserMapper.xml
<delete id="deleteRoleIds" parameterType="user">
delete from sys_user_role where userId=#{id}
</delete>
<delete id="deleteUser" parameterType="Long">
delete from sys_user where id=#{id}
</delete>
deleteRoleIds" parameterType=“user”>
delete from sys_user_role where userId=#{id}
delete from sys_user where id=#{id}