首页 > 其他分享 >springboot综合案例综合案例第五课

springboot综合案例综合案例第五课

时间:2023-08-17 21:31:47浏览次数:31  
标签:return springboot 角色 第五课 param 案例 role Integer id

角色管理

角色查询

角色查询直接查询即可

角色查询执行流程

image-20201017152618388

编写RoleMapper接口

public interface RoleMapper {

    /**
     * 查询角色
     */
    List<Role> findAll();
}

编写RoleService

public interface RoleService {
    /**
     * 查询角色
     * @param page
     * @param size
     * @return
     */
    List<Role> findAll(Integer page, Integer size);
}
@Service
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleMapper roleMapper;

    /**
     * 查询角色
     * @param page
     * @param size
     * @return
     */
    @Override
    public List<Role> findAll(Integer page, Integer size) {
        PageHelper.startPage(page,size);
        return roleMapper.findAll();
    }
}

编写RoleController

@Controller
@RequestMapping("role")
public class RoleController {

    @Autowired
    private RoleService roleService;

    /**
     * 查询所有
     * @param page
     * @param size
     * @param model
     * @return
     */
    @GetMapping("findAll")
    public String findAll(@RequestParam(value = "page", defaultValue = "1") Integer page ,
                          @RequestParam(value = "size",defaultValue = "5") Integer size,
                          Model model){
        PageHelper.startPage(page,size);
        List<Role>  list = this.roleService.findAll();
        PageInfo pageInfo = new PageInfo(list);
        model.addAttribute("pageInfo",pageInfo);
        return "role-list";
    }
}

编写RoleMapper.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="cn.yanqi.ssm.mapper.RoleMapper">
    <select id="findAll" resultType="Role">
       select * from role
    </select>
</mapper>

编写role-list页面

将资料中的role-list.jsp文件复制到当前项目中即可

修改左侧导航链接

<li id="system-setting2">
    <a rel="nofollow" href="${pageContext.request.contextPath}/role/findAll.do?page=1&size=5">
        <span class="glyphicon glyphicon-object-align-bottom"></span> 角色管理
    </a>
</li>

测试

image-20210520225559932

角色添加

角色添加,直接添加即可

角色添加执行流程

image-20201017151804892

编写RoleMapper接口

/**
 * 添加角色
 * @param role
 */
void save(Role role);

编写RoleService

/**
 * 添加角色
 * @param role
 */
void save(Role role);
@Service
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleMapper roleMapper;

     /**
     * 添加角色
     * @param role
     */
    @Override
    public void save(Role role) {
       this.roleMapper.save(role);
    }
}

编写RoleController

@Controller
@RequestMapping("role")
public class RoleController {

    @Autowired
    private RoleService roleService;

    /**
     * 新增角色
     * @param role
     * @return
     */
    @PostMapping("save")
    public String save(Role role){
        this.roleService.save(role);
        return "redirect:findAll";
    }
}

编写RoleMapper.xml

 <!--添加角色-->
<insert id="save">
    insert into role(roleName,roleDesc) values(#{roleName},#{roleDesc})
</insert>

编写role-add页面

将资料中的role-add.jsp文件复制到当前项目中即可

测试

image-20210520230342968

image-20210520230314494

角色详情

查询角色详情,包含角色的对应的资源权限,(角色表,资源权限表)

编写RoleController

    /**
     * 角色详情
     * @param id
     * @param model
     * @return
     */
    @GetMapping("findById")
    public String findById(@RequestParam("id") Integer id , Model model){
        Role role =   this.roleService.findById(id);
        model.addAttribute("role",role);
        return "role-show";

    }

编写RoleService

    /**
     * 角色详情
     * @param id
     * @return
     */
    Role findById(Integer id);
    /**
     * 角色详情
     * @param id
     * @return
     */
    @Override
    public Role findById(Integer id) {
        return this.roleMapper.findById(id);
    }

编写RoleMapper

    /**
     * 角色详情
     * @param id
     * @return
     */
    Role findById(Integer id);

编写RoleMapper.xml

    <!--角色详情-->
    <resultMap id="findByIdMap" type="Role" autoMapping="true">
        <id column="rid" property="id"/>
        <!--角色对应的关系-->
        <collection property="permissions" javaType="List" ofType="Permission" autoMapping="true">
            <id column="pid" property="id"/>
        </collection>
    </resultMap>
    <select id="findById" resultMap="findByIdMap">
        SELECT
            *,
            r.id rid,
            p.id pid
        FROM
            role r
            LEFT JOIN role_permission rp ON rp.roleId = r.id
            LEFT JOIN permission p ON rp.permissionId = p.id
        WHERE
            r.id = #{id}
    </select>

测试

image-20210528114200056

查询哪些资源权限可以添加

编写RoleController

    /**
     * 添加资源权限前-查询哪些资源权限可以添加
     * @param id
     * @return
     */
    @GetMapping("findRoleByIdAndAllPermission")
    public String findRoleByIdAndAllPermission(@RequestParam("id") Integer id, Model model){
        //查询当前角色的是谁
        Role role = this.roleService.findById(id);
        model.addAttribute("role",role);

        //查询当前角色哪些权限可以添加
        List<Permission> list =  this.roleService.findOtherPermission(id);
        model.addAttribute("permissionList", list);

        return "role-permission-add";
    }

编写RoleService

    /**
     * 角色详情  (已写过)
     * @param id
     * @return
     */
    Role findById(Integer id);

    /**
     * 添加资源权限前-查询哪些资源权限可以添加
     * @param id
     * @return
     */
    List<Permission> findOtherPermission(Integer id);
    /**
     * 角色详情 (已写过)
     * @param id
     * @return
     */
    @Override
    public Role findById(Integer id) {
        return this.roleMapper.findById(id);
    }

    /**
     * 添加资源权限前-查询哪些资源权限可以添加
     * @param id
     * @return
     */
    @Override
    public List<Permission> findOtherPermission(Integer id) {
        return this.roleMapper.findOtherPermission(id);
    }

编写RoleMapper

    /**
     * 角色详情 (已写过)
     * @param id
     * @return
     */
    Role findById(Integer id);

    /**
     * 添加资源权限前-查询哪些资源权限可以添加
     * @param id
     * @return
     */
    List<Permission> findOtherPermission(Integer id);

编写RoleMapper.xml

    <!--添加资源权限前-查询哪些资源权限可以添加-->
    <select id="findOtherPermission" resultType="Permission">
        select * from permission where id not in(select  permissionId from role_permission where roleId = #{id})
    </select>

    <!--角色详情 已写过-->
    <resultMap id="findByIdMap" type="Role" autoMapping="true">
        <id column="rid" property="id"/>
        <!--角色对应的关系-->
        <collection property="permissions" javaType="List" ofType="Permission" autoMapping="true">
            <id column="pid" property="id"/>
        </collection>
    </resultMap>
    <select id="findById" resultMap="findByIdMap">
        SELECT
            *,
            r.id rid,
            p.id pid
        FROM
            role r,
            permission p,
            role_permission rp
        WHERE
            rp.roleId = r.id AND
            rp.permissionId = p.id and
            r.id = #{id}
    </select>

测试

给角色添加资源权限

编写RoleController

    @PostMapping("addPermissionToRole")
    public String addPermissionToRole(@RequestParam("roleId") Integer roleId , 
                                      @RequestParam("ids") Integer[] ids){
        this.roleService.addPermissionToRole(roleId,ids);
        return "redirect:findAll";
    }

编写RoleService

    /**
     * 给角色添加资源权限
     * @param roleId
     * @param permissionIds
     * @return
     */
    void addPermissionToRole(Integer roleId, Integer[] permissionIds);
    /**
     * 给角色添加资源权限
     * @param roleId
     * @return
     */
    @Override
    public void addPermissionToRole(Integer roleId, Integer[] permissionIds) {
        for(Integer permissionId : permissionIds){
            this.roleMapper.addPermissionToRole(roleId,permissionId);
        }
    }

编写RoleMapper

    /**
     * 给角色添加资源权限
     * @param roleId
     */
    void addPermissionToRole(@Param("roleId") Integer roleId,@Param("permissionId") Integer permissionId);

编写RoleMapper.xml

    <!--给角色添加资源权限-->
    <insert id="addPermissionToRole">
        INSERT INTO `ssm_crud`.`role_permission`(`permissionId`, `roleId`) VALUES (#{permissionId},#{roleId});
    </insert>

删除角色

编写RoleController

   /**
     * 删除角色
     * @param id
     * @return
     */
    @GetMapping("deleteRole")
    public String deleteRole(@RequestParam("id") Integer id){
        this.roleService.deleteRole(id);
        return "redirect:findAll";
    }

编写RoleService

    /**
     * 删除角色
     * @param id
     * @return
     */
    @Override
    public void deleteRole(Integer id) {
        //删除角色-从users_role表解关系
        this.roleMapper.deleteFrom_users_role_ById(id);
        //删除角色-从role_permission表解关系
        this.roleMapper.deleteFrom_role_permission_ById(id);
        //删除角色-从role表删除
        this.roleMapper.deleteRole(id);
    }

编写RoleMapper

   /**
     * 删除角色-从users_role表解关系
     * @param id
     */
    void deleteFrom_users_role_ById(Integer id);

    /**
     * 删除角色-从role_permission表解关系
     * @param id
     */
    void deleteFrom_role_permission_ById(Integer id);

    /**
     * 删除角色-从role表删除
     * @param id
     */
    void deleteRole(Integer id);

编写RoleMapper.xml

	<!--删除角色-从users_role表解关系-->
	<delete id="deleteFrom_users_role_ById">
		delete from users_role where roleId = #{id}
	</delete>

	<!--删除角色-从role_permission表解关系-->
	<delete id="deleteFrom_role_permission_ById">
		delete from role_permission where roleId = #{id}
	</delete>

	<!--删除角色-从role表删除-->
	<delete id="deleteRole">
		delete from role where id = #{id}
	</delete>

标签:return,springboot,角色,第五课,param,案例,role,Integer,id
From: https://blog.51cto.com/teayear/7127694

相关文章

  • 异步代码微任务宏任务案例
    案例一案例01process.nextTick(()=>{console.log("111");})constpromise=newPromise(resolve=>{console.log("222");resolve()})setTimeout(()=>{console.log("333");},100)promise.then(()=>{console.log(&quo......
  • 有关springboot的一些理解
    springboot概念springboot是spring项目的脚手架,其能够快速构建spring项目,不再需要一些对应用程序的xml文件配置,其自带许多硬件设备的驱动。其核心是约定大于配置理念,即减少人为配置,尽量采用默认的配置即可。例如,不同于单独的springMVC,其默认配置了包括tomcat服务器,视图解析器等......
  • SpringBoot+Mybatis-Plus+Mysql的保姆级搭建
    本文通过简单的示例代码和说明,让读者能够了解Mybatis-Plus+Mysql的简单使用必须说明的是,本文有部分内容是为了后续的微服务写的,所以如果只想用Mybatis-Plus的话,直接使用bank1项目即可 1.新建父项目,选用springinitializr即可,可以删除其他文件,仅仅留下pom文件当成父pom。修改......
  • 卷轴模式开发卷轴任务驱动逻辑案例分析
    卷轴模式从趣步模式开始到现在,不断有新的项目出来,如果说2023年商业模式项目做个排行,我想有一半的项目是卷轴模式的项目,它的特点也很明显,互联网生意讲究免费,羊毛出在猪身上狗来买单的逻辑.免费,让所有人都能参与进来玩,免费,让系统本身具备分销裂变的属性,可以快速地积累用户数据资源。......
  • SpringBoot操作前端传的Geojson进行空间查询
    SpringBoot操作前端传的Geojson进行空间查询项目说明:项目技术栈:SpringBoot+MybatisPlus+postgresql先上查询SQLSELECT*FROMdemoWHEREST_Intersects(geom,ST_GeomFromGeoJSON('放geojson类型数据'));表结构Controller层packagecom.itcy.postgresql.controller;importco......
  • RabbitMQ与SpringBoot 集成
    1、添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2、添加配置官方配置https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/h......
  • springboot集成cas
    CAS介绍CAS是CentralAuthenticationService的缩写,中央认证服务,一种独立开放指令协议。CAS是耶鲁大学(YaleUniversity)发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法,CAS在2004年12月正式成为JA-SIG的一个项目。特点:开源的企业级单点登录解决方案......
  • IDEA社区版+SpringBoot+MyBatisPLus+MySQL实现数据库的保存、查询、修改操作
    一、概述使用IDEA社区+SpringBoot+MyBatisPlus+MySQL实现数据的保存修改与查询。主要记录一下踩坑过程。注意事项:1.社区版IDEA并不能直接创建SpringBoot工程,所以我采用的方式是在Spring官网上,让其帮助我创建一个,创建好后,直接下载。//参考案例https://blog.csd......
  • 【13章】SpringBoot打造企业级一体化SaaS系统
    课程下载——【13章】SpringBoot打造企业级一体化SaaS系统提取码:y8v1 分享课程——【13章】SpringBoot打造企业级一体化SaaS系统,附源码。课程中整合后端主流技术(SpringBoot、物理数据库隔离、加载动态权限、多方式权限控制)、前端必会框架(vue3),完整落地ERP+CRM一体化SaaS系统,带......
  • 安科瑞变电所运维系统在电力系统的应用及案例分析 
    未晓妃安科瑞电气股份有限公司上海嘉定201801摘要:电力系统在电力企业中具有应用价值,随着电力系统的规模扩大,电力设备的应用量增加,考虑到电力系统的当前运行情况以及不断增加的电能*,相关工作单位需要加强变电运维技术的应用,保障变电运效益。为此,既有的变电运维系统应当被改进。现......