Day35项目saas-export项目-强化练习-RoleCRUD

学习目标

  • (1)角色CRUD
  • (2)用户CRUD
  • (3)权限CRUD

单表CRUD- Xxx管理

Xxx管理后台

  • (1)TesXxxService
  • (2)IXxxService
  • (3)XxxServiceImpl
  • (4)IXxxDao
  • (5)XxxDaoImpl.xml

管理前台

  • (1)XxxController

  • (2)xxx-yyy.jsp
    Ajax删除

  • 各位开发者需要找出一套适合自己的开发路径,更清析的思路,更少的bug

Xxx管理分析

  • (1)查看页面
  • (2)与CRUD练习的相似度非常高
  • (3)新建相关的类与xml文件
  • (4)把业务类方法的增删改查编写出来
  • (5)把控制器类方法编写出来
  • (6)选中列的技巧:Alt+竖向选择
  • (7)业务中,只有少数关联操作需要重点理解

查看页面RoleController

@Controller
@RequestMapping("/system/role")
public class RoleController {
    private static  final Logger l = LoggerFactory.getLogger(RoleController.class);

    @RequestMapping(path="/toList",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toList(){
        return "system/role/role-list";
    }
    @RequestMapping(path="/toAdd",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toAdd(){
        return "system/role/role-add";
    }
    @RequestMapping(path="/toUpdate",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toUpdate(){
        return "system/role/role-update";
    }
    @RequestMapping(path="/toRoleModule",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toRoleModule(){
        return "system/role/role-module";
    }
}

定义了Role类

public class Role {
    private String roleId      ;
    private String name         ;
    private String remark       ;
    private long orderNo     ;
    private String createBy    ;
    private String createDept  ;
    private Date createTime  ;
    private String updateBy    ;
    private Date updateTime  ;
    private String companyId   ; //不同的公司使用不同的角色,但都放在同一表里面,怎么区分?
    private String companyName ;//每条记录 通过companyId,companyName指定所属

设置字段与变量的映射

   <!-- resultType 指定一个java类型,要求表的字段与变量的名称一致
    resultMap  适用不一致的情况-->
    <resultMap id="roleMap" type="role">
        <id column="role_id"      property="roleId"       />
        <result column="name"         property="name"         />
        <result column="remark"       property="remark"       />
        <result column="order_no"     property="orderNo"      />
        <result column="create_by"    property="createBy"     />
        <result column="create_dept"  property="createDept"   />
        <result column="create_time"  property="createTime"   />
        <result column="update_by"    property="updateBy"     />
        <result column="update_time"  property="updateTime"   />
        <result column="company_id"   property="companyId"    />
        <result column="company_name" property="companyName"  />
    </resultMap>

把业务类方法的增删改查编写出来

TestRoleService

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
public class TestRoleService {
    private static final Logger l = LoggerFactory.getLogger(TestRoleService.class);
    
    @Autowired
    IRoleService iRoleService;
    //增*删改查*
    @Test
    public void test01(){
        //分页列表
        //页面上显示分页列表,就要求业务方法中提供查询PageInfo的方法
       PageInfo<Role>  pi= iRoleService.findByPage(1,3,"1");
       l.info("pi = "+pi);
    }
    @Test
    public void test02(){
        //
        //将一个表单数据保存在javaBean中,再将javaBean存到数据库
        Role role = new Role();
        role.setName("角色1");
        role.setRemark("角色1的备注");
        role.setCompanyId("1");
        role.setCompanyName("吉首大学");
        iRoleService.saveRole(role);

    }

    @Test
    public void test03(){
        //
        //更新业务  先根据id查找出对应的一条记录,编辑它的值,再将记录保存到数据库中

        String roleId="c77751fa-b6a5-45a6-a2b1-704f358e1bee";
        Role role =  iRoleService.findById(roleId);
        l.info("role="+role);
        //修改
        role.setName("角色2");
        role.setRemark("角色2备注");
        //保存
       iRoleService.updateRole(role);

    }
    @Test
    public void test04(){
        //
        //删除业务,就是根据指定的id,删除数据库中的记录
        String roleId="33";
        //删除
        iRoleService.deleteRole(roleId);

    }
}

IRoleService

public interface IRoleService {
    PageInfo<Role> findByPage(int curr, int pageSize, String companyId);

    void saveRole(Role role);

    Role findById(String roleId);
    void updateRole(Role role);

    void deleteRole(String roleId);
}

RoleServiceImpl

@Service
public class RoleServiceImpl implements IRoleService {
    //service调用dao
    @Autowired
    IRoleDao iRoleDao;
    @Override
    public PageInfo<Role> findByPage(int curr, int pageSize, String companyId) {
        //设置参数
        PageHelper.startPage(curr,pageSize);
        //调用全查
        List<Role> list = iRoleDao.findAll(companyId);
        //包装成PageInfo
        PageInfo<Role> pi = new PageInfo<>(list);
        return pi;
    }

    @Override
    public void saveRole(Role role) {
        String uuid= UUID.randomUUID().toString();
        role.setRoleId(uuid);
        iRoleDao.save(role);
    }

    @Override
    public Role findById(String roleId) {
        return iRoleDao.findById(roleId);
    }

    @Override
    public void updateRole(Role role) {
        iRoleDao.update(role);
    }

    @Override
    public void deleteRole(String roleId) {
        iRoleDao.deleteById(roleId);
    }
}

IRoleDao

public interface IRoleDao {
    List<Role> findAll(String companyId);

    void save(Role role);

    Role findById(String roleId);
    void update(Role role);

    void deleteById(String roleId);
}

IRoleDao.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" >
<!--namespace: 需要映射的Dao接口类型-->
<mapper namespace="com.wzx.dao.system.role.IRoleDao">

   <!-- resultType 指定一个java类型,要求表的字段与变量的名称一致
    resultMap  适用不一致的情况-->
    <resultMap id="roleMap" type="role">
        <id column="role_id"      property="roleId"       />
        <result column="name"         property="name"         />
        <result column="remark"       property="remark"       />
        <result column="order_no"     property="orderNo"      />
        <result column="create_by"    property="createBy"     />
        <result column="create_dept"  property="createDept"   />
        <result column="create_time"  property="createTime"   />
        <result column="update_by"    property="updateBy"     />
        <result column="update_time"  property="updateTime"   />
        <result column="company_id"   property="companyId"    />
        <result column="company_name" property="companyName"  />
    </resultMap>

    <select id="findAll" parameterType="string" resultMap="roleMap">
        select * from pe_role where company_id=#{companyId} order by order_no
    </select>


    <insert id="save" parameterType="role">
        insert into pe_role
        (
        role_id       ,
        name          ,
        remark        ,
        order_no      ,
        create_by     ,
        create_dept   ,
        create_time   ,
        update_by     ,
        update_time   ,
        company_id    ,
        company_name
        )
        values
        (
        #{roleId      },
        #{name        },
        #{remark      },
        #{orderNo     },
        #{createBy    },
        #{createDept  },
        #{createTime  },
        #{updateBy    },
        #{updateTime  },
        #{companyId   },
        #{companyName }

        )

    </insert>


    <select id="findById" parameterType="string" resultMap="roleMap">
        select * from pe_role where role_id=#{roleId}
    </select>

    <update id="update" parameterType="role">
            update pe_role set

            name         = #{name       },
            remark       = #{remark     },
            order_no     = #{orderNo    },
            create_by    = #{createBy   },
            create_dept  = #{createDept },
            create_time  = #{createTime },
            update_by    = #{updateBy   },
            update_time  = #{updateTime },
            company_id   = #{companyId  },
            company_name = #{companyName}

            where role_id = #{roleId}
    </update>

    <delete id="deleteById" parameterType="string">
            delete from pe_role where role_id=#{roleId}
    </delete>
</mapper>

Service与Dao方法命名区别

  • dao的方法通常 update() save() deleteByXxx() findByXxx
  • service 的方法通常 updateXxx() saveXxx() deleteXxxByXxx() findXxxByXxx

把控制器类方法编写出来

page.jsp修改

<%--<form id="pageForm" action="${param.pageUrl}" method="post">--%>
<%--    <input type="hidden" name="curr" id="curr">--%>
<%--    <input type="hidden" name="pageSize" id="pageSize">--%>
<%--</form>--%>
<script>
    function goPage(page) {
        <%--document.getElementById("curr").value = page //curr=2--%>
        <%--document.getElementById("pageSize").value = ${pi.pageSize} //pageSize=3--%>
        <%--document.getElementById("pageForm").submit()--%>
        //get 修改地址的数据
        window.location='${param.pageUrl}?curr='+page+'&pageSize='+ ${pi.pageSize}
    }
</script>

RoleController


@Controller
@RequestMapping("/system/role")
public class RoleController extends BaseController {
    private static  final Logger l = LoggerFactory.getLogger(RoleController.class);

    @Autowired
    IRoleService iRoleService;
    @RequestMapping(path="/toList",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toList(@RequestParam(defaultValue = "1") int curr, @RequestParam(defaultValue = "3")int pageSize){
        //调查询分页列表的方法
        PageInfo<Role> pi = iRoleService.findByPage(curr, pageSize, getLoginCompanyId());
        //将pi添加到页面
        request.setAttribute("pi",pi);
        return "system/role/role-list";
    }
    @RequestMapping(path="/toAdd",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toAdd(){
        return "system/role/role-add";
    }
    @RequestMapping(path="/add",method ={ RequestMethod.GET, RequestMethod.POST})
    public String add(Role role){//接收页面提交过来的表单
        l.info("add role="+role);
        role.setCompanyId(getLoginCompanyId());
        role.setCompanyName(getLoginCompanyName());
        iRoleService.saveRole(role);
        return "redirect:/system/role/toList.do";
    }
    //${path}/system/role/toUpdate.do?roleId=${o.roleId}
    @RequestMapping(path="/toUpdate",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toUpdate(String roleId){//需要使用参数接收提交的 roleId
        Role role =  iRoleService.findById(roleId);
        l.info("toUpdate role="+role);

        //回显到页面
        request.setAttribute("role",role);
        return "system/role/role-update";
    }

    //action="${path}/system/role/update.do"
    @RequestMapping(path="/update",method ={ RequestMethod.GET, RequestMethod.POST})
    public String update(Role role){//需要接收编辑页面提交的表单数据
        l.info("update role="+role);
        //更新
        //重新设置companyId companyName
        role.setCompanyId(getLoginCompanyId());
        role.setCompanyName(getLoginCompanyName());

        iRoleService.updateRole(role);
        return "redirect:/system/role/toList.do";
    }

    //${path}/system/role/delete.do?roleId='+id;
    //{code:200,msg:'删除成功',data:null}
    @RequestMapping(path="/delete",method ={ RequestMethod.GET, RequestMethod.POST})
    public @ResponseBody
    Object delete(String roleId){//参数接收页面js提交过来的roleId
        try {
            iRoleService.deleteRole(roleId);
            //成功
            return Result.init(200,"删除成功",null);
        } catch (Exception e) {
            e.printStackTrace();
            //失败
            return Result.init(-200,"删除失败",null);
        }
    }

    @RequestMapping(path="/toRoleModule",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toRoleModule(){
        return "system/role/role-module";
    }
}

页面总结

  • 就做以下几件事
  • 修改地址
  • 修改表单
  • 写写el
  • 写if标签 foreach标签
  • 写ajax请求
<script>
    function deleteById() {
        var id = getCheckId()
        if(id) {
            if(confirm("你确认要删除此条记录吗?")) {
                // location.href="/system/role/delete.do?id="+id;
                //使用ajax请求
                var url= '${path}/system/role/delete.do?roleId='+id;
                var fn = function(result){ //{code:200,msg:'删除成功',data:null}
                    //弹出提示
                    alert(result.msg)
                    window.location.reload() //重新加载
                }
                $.get(url,fn,'json')
            }
        }else{
            alert("请勾选待处理的记录,且每次只能勾选一个")
        }
    }

    function findModuleByRoleId(){
        var id = getCheckId();
        if(id) {
            location.href="/system/role/roleModule.do?roleid="+id;
        }else{
            alert("请勾选待处理的记录,且每次只能勾选一个")
        }
    }
</script>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翁老师的教学团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值