Day33项目saas-export项目-部门管理-分页列表

学习目标

  • (1)jsp代码重用
  • (2)部门模块
  • (3)部门CRUD

jsp代码重用

  • (1)jsp代码是可以重用
  • (2)jsp代码如何重用?
    建立jsp页面 A,保存重用代码
    在当前页面 B 中引入A
    <jsp:include page="A.jsp" />
  • (3)B可以将参数传给A
    <jsp:param name="jack" value="rose"/>
    ${param.jack}

demo02.jsp

<body>
    <%-- 子标签param,将k-v值传给被include页面--%>
    <jsp:include page="demo02_common.jsp">

        <jsp:param name="jack" value="rose" ></jsp:param>
        <jsp:param name="url" value="http://www.baiud.com" ></jsp:param>
    </jsp:include>
        我是主要内容
    <jsp:include page="demo02_common.jsp"></jsp:include>
</body>

demo02_common.jsp

<body>
    <h1>我是可以重用的jsp代码部分</h1>
        ${param.jack}
        ${param.url} //分页需要使用地址参数
</body>

jsp代码重用- 分页代码

  • (1)分页工具条,肯定是可以重用的
    page.jsp
    company-list.jsp
   <div class="box-footer">
            <jsp:include page="../common/page.jsp">
                <jsp:param value="${path}/company/list.do" name="pageUrl"/>
            </jsp:include>
</div>

page.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<div class="pull-left">
    <div class="form-group form-inline">
        总共${pi.pages} 页,共${pi.total} 条数据。
    </div>
</div>

<div class="box-tools pull-right">
    <ul class="pagination" style="margin: 0px;">
        <li >
            <a href="javascript:goPage(1)" aria-label="Previous">首页</a>
        </li>
        <c:if test="${pi.pageNum != 1 }">
            <li><a href="javascript:goPage(${pi.prePage})">上一页</a></li>
        </c:if>
        <c:forEach begin="1" end="${pi.pages}" var="i">
            <li class="paginate_button ${pi.pageNum==i ? 'active':''}"><a href="javascript:goPage(${i})">${i}</a></li>
        </c:forEach>
        <c:if test="${pi.pageNum != pi.pages }">
            <li><a href="javascript:goPage(${pi.nextPage})">下一页</a></li>
        </c:if>

        <li>
            <a href="javascript:goPage(${pi.pages})" aria-label="Next">尾页</a>
        </li>
    </ul>
</div>
<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()
    }
</script>
</body>
</html>

  • (2)重新修改页面的el表达式

部门管理-需求分析

  • (1)组织架构图
  • (2)parent_id的含义
    如果一个部门记录的parent_id为null,没有上级部门
    反之就是有
  • (3)如何体现一个分司有几个部门?
    company_id
    在这里插入图片描述

部门分页列表后台

  • (1)包名如何定义? 按功能 system
  • (2)Dept 实体类中不定义parent_id

class Dept{
   private Dept parent;
}
  • (3)classpath与classpath*, 区别?
    classpath: 读取当前项目的类路径
    classpath*: 读取当前项目及依赖工程的类路径

  • (4)如何实现同时查询部门和父部门的映射?
    <assoication property column javaType select>

部门分页列表后台

(1)TestDeptService

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
public class TestDeptService {
    private static final Logger l = LoggerFactory.getLogger(TestDeptService.class);

    //1:注入部门业务类
    //1.1定义接口
    //1.2定义了实现类
    //1.3在实现类上加@Service
    @Autowired
    IDeptService iDeptService;
    @Test
    public void test01(){
        //部门分页显示
        int curr=1;
        int pageSize=3;
        String  companyId="1";
        //2 调用分页查找方法
        PageInfo<Dept> pi = iDeptService.findByPage(curr,pageSize,companyId);//整数   参1 当前第几页  参2 每页多少条 参3 公司id
        //打印
        l.info("test01 pi="+pi);
    }



}

(2)Dept

public class Dept {
    //成员变量是小驼峰 第二个单词起首字母大写
    //deptId

    //数据库  每个单词小写 使用_隔开
    //dept_id

    private String deptId;
    private String deptName;
    //private String parentId; //上级部门
    private Dept parent; //上级部门
    private Integer state;
    private String companyId;//企业id
    private String companyName;

(3)IDeptService

public interface IDeptService {
    //查询指定公司id的第几个部门分页
    PageInfo<Dept> findByPage(int curr, int pageSize, String companyId);
}

(4)DeptServiceImpl

@Service//将给spring管理
public class DeptServiceImpl implements IDeptService {

    //还需要注入dao 根据三层架构  service调用dao
    @Autowired
    IDeptDao iDeptDao;
    @Override
    public PageInfo<Dept> findByPage(int curr, int pageSize, String companyId) {
        //调用dao查询所有的记录
        //select * from dept;
        //select count(*) from dept;
        //select * from dept limit 0,20;
        PageHelper.startPage(curr,pageSize);
        List<Dept> list =  iDeptDao.findAll();
        return new PageInfo<>(list);
    }
}

(5)IDeptDao

public interface IDeptDao {
    List<Dept> findAll();
    Dept findById(String deptId);
}

(6)IDeptDao.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.dept.IDeptDao">

    <select id="findAll" resultMap="findOneMap">
            select * from pe_dept
    </select>
    <!--将查询结果映射到成员变量-->
    <resultMap id="findOneMap" type="dept">
        <id column="dept_id" property="deptId"/>
        <result column="dept_name" property="deptName"/>
        <result column="company_id" property="companyId"/>
        <result column="company_name" property="companyName"/>
        <!-- 将parent_id 映射Dept类型-->
        <association property="parent"  column="parent_id" javaType="dept" select="findById">
        </association>
    </resultMap>

    <select id="findById" parameterType="string" resultMap="findOneMap">
        select  * from  pe_dept where dept_id = #{dept_id}
    </select>
</mapper>

部门分页列表前台

在这里插入图片描述

(1)DeptController


@Controller
@RequestMapping("/dept")
public class DeptController {
    @Autowired
    IDeptService iDeptService;

    private static  final Logger l = LoggerFactory.getLogger(DeptController.class);
    @RequestMapping(path="/toList",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toList(Model model, Integer curr, Integer pageSize, String companyId){
        l.info("toList curr = "+curr);
        l.info("toList pageSize = "+pageSize);
        l.info("toList companyId = "+companyId);
        //查询一个分页
        PageInfo<Dept> pi = iDeptService.findByPage(curr, pageSize, companyId);

        l.info("toList pi = "+pi);
        model.addAttribute("pi",pi);
        return "system/dept/dept-list";
    }
}

(2)dept-list.jsp

分页

 <c:forEach items="${pi.list}" var="dept"  varStatus="st">
                        <tr>
                            <td><input type="checkbox" name="id" value="${dept.deptId }"/></td>
                            <td>${st.count }</td>
                            <td>${dept.deptId }</td>
                            <td>${dept.parent.deptName }</td>
                            <td><a href="/system/dept/toUpdate.do?id=${dept.deptId }">${dept.deptName }</a></td>
                            <th class="text-center"><button type="button" class="btn bg-olive btn-xs" onclick='location.href="/system/dept/toUpdate.do?id=${dept.deptId}"'>编辑</button></th>
                        </tr>
                    </c:forEach>

调用工具栏

  <div class="box-footer">
            <jsp:include page="../../common/page.jsp">
                <jsp:param value="${path}/dept/toList.do" name="pageUrl"/>
            </jsp:include>
        </div>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

翁老师的教学团队

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

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

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

打赏作者

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

抵扣说明:

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

余额充值