victory的博客

长安一片月,万户捣衣声

0%

SSM | 列表及分页

列表及分页

1.index.jsp(请求)

......
<a href="emps/1">展示员工信息</a>
......

2.PageUtil.java

package com.atguigu.ssm.util;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import com.atguigu.ssm.bean.Emp;
import com.github.pagehelper.PageInfo;

/**
 * 首页 上一页 1 2 3 4 5 下一页 末页
 */
public class PageUtil {
    public static String getPageInfo(PageInfo<?> pageInfo, HttpServletRequest request){
        String path = request.getContextPath() + "/";
        
        StringBuilder builder = new StringBuilder();
        
        //拼接首页
        builder.append("<a href='"+path+"emps/1'>首页</a>");
        builder.append("&nbsp;");
        
        //拼接上一页
        if(pageInfo.isHasPreviousPage()){
            builder.append("<a href='"+path+"emps/"+pageInfo.getPrePage()+"'>上一页 </a>");
            builder.append("&nbsp;");
        }else{
            builder.append("上一页");
            builder.append("&nbsp;");
        }
        
        //拼接页码
        int[] nums = pageInfo.getNavigatepageNums();
        for(int i : nums){
            if(i == pageInfo.getPageNum()){
                builder.append("<a style='color:red;' href='"+path+"emps/"+i+"'>"+i+"</a>");
                builder.append("&nbsp;");
            }else{
                builder.append("<a href='"+path+"emps/"+i+"'>"+i+"</a>");
                builder.append("&nbsp;");
            }
        }
        
        //拼接下一页
        if(pageInfo.isHasNextPage()){
            builder.append("<a href='"+path+"emps/"+pageInfo.getNextPage()+"'>下一页</a>");
            builder.append("&nbsp;");
        }else{
            builder.append("下一页");
            builder.append("&nbsp;");
        }
        
        //拼接尾页
        builder.append("<a href='"+path+"emps/"+pageInfo.getPages()+"'>尾页</a>");
        builder.append("&nbsp;");
        
        return builder.toString();
    }
}

3.EmpController.java

package com.atguigu.ssm.controller;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.atguigu.ssm.bean.Emp;
import com.atguigu.ssm.service.EmpService;
import com.atguigu.ssm.util.PageUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

@Controller
public class EmpController {

    @Autowired
    private EmpService service;
    
    @RequestMapping(value="/emps/{pageNum}", method=RequestMethod.GET)
    public String getAllEmp(Map<String, Object> map, @PathVariable("pageNum")Integer pageNum, HttpServletRequest request){
        PageHelper.startPage(pageNum, 1);
        List<Emp> empList = service.getAllEmp();
        PageInfo<Emp> pageInfo = new PageInfo<>(empList, 5);
        String page = PageUtil.getPageInfo(pageInfo, request);
        map.put("empList", empList);
        map.put("page", page);
        return "list";
    }
}

4.EmpService(Service接口)

package com.atguigu.ssm.service;

import java.util.List;

import com.atguigu.ssm.bean.Emp;

public interface EmpService {
    List<Emp> getAllEmp();
    
    Emp getEmpByEid(String eid);
    
    void updateEmp(Emp emp);
}

5.EmpServiceImpl.java(Service实现类)

package com.atguigu.ssm.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.atguigu.ssm.bean.Emp;
import com.atguigu.ssm.mapper.EmpMapper;
import com.atguigu.ssm.service.EmpService;

@Service
public class EmpServiceImpl implements EmpService{
    @Autowired
    private EmpMapper mapper;

    @Override
    public List<Emp> getAllEmp() {
        // TODO Auto-generated method stub
        return mapper.getAllEmp();
    }

    @Override
    public Emp getEmpByEid(String eid) {
        // TODO Auto-generated method stub
        return mapper.getEmpByEid(eid);
    }

    @Override
    public void updateEmp(Emp emp) {
        // TODO Auto-generated method stub
        mapper.updateEmp(emp);
    }
}

6.Emp.java(Emp Bean)

package com.atguigu.ssm.bean;

public class Dept {
    private Integer did;
    private String dname;
    public Integer getDid() {
        return did;
    }
    public void setDid(Integer did) {
        this.did = did;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
}

7.Dept.java(Dept Bean)

package com.atguigu.ssm.bean;

public class Emp {
    private Integer eid;
    private String ename;
    private Integer age;
    private String sex;
    private Dept dept;
    public Integer getEid() {
        return eid;
    }
    public void setEid(Integer eid) {
        this.eid = eid;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Dept getDept() {
        return dept;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
}

8.EmpMapper.java(Emp Mapper接口)

package com.atguigu.ssm.mapper;

import java.util.List;

import com.atguigu.ssm.bean.Emp;

public interface EmpMapper {
    //获取所有的员工信息
    List<Emp> getAllEmp();
    
    //根据eid获取员工信息
    Emp getEmpByEid(String eid);
    
    //修改员工信息
    void updateEmp(Emp emp);
}

9.DeptMapper.java(Dept Mapper接口)

package com.atguigu.ssm.mapper;

import java.util.List;

import com.atguigu.ssm.bean.Dept;

public interface DeptMapper {
    //获取所有的部门信息
    List<Dept> getAllDept();
}

10.EmpMapper.xml(Emp映射文件)

<?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="com.atguigu.ssm.mapper.EmpMapper">
    <!-- 
        //获取所有的员工信息
        List<Emp> getAllEmp(); 
    -->
    <resultMap type="Emp" id="empMap">
        <id column="eid" property="eid" />
        <result column="ename" property="ename"/>
        <result column="age" property="age"/>
        <result column="sex" property="sex"/>
        <association property="dept" javaType="Dept">
            <id column="did" property="did"/>
            <result column="dname" property="dname"/>
        </association>
    </resultMap>
    <select id="getAllEmp" resultMap="empMap">
        select 
        e.eid,e.ename,e.age,e.sex,d.did,d.dname
        from emp e 
        left join 
        dept d
        on 
        e.did = d.did
    </select>
    
    <!-- 
        //根据eid获取员工信息
        Emp getEmpByEid(String eid); 
    -->
    <select id="getEmpByEid" resultMap="empMap">
        select 
        e.eid,e.ename,e.age,e.sex,d.did,d.dname
        from emp e 
        left join 
        dept d
        on 
        e.did = d.did
        where e.eid = #{eid}
    </select>
    
    <!-- 
        //修改员工信息
        void updateEmp(Emp emp); 
    -->
    <update id="updateEmp">
        update emp set
        ename = #{ename},
        age = #{age},
        sex = #{sex},
        did = #{dept.did}
        where eid = #{eid}
    </update>
</mapper>

11.DeptMapper.xml(Dept映射文件)

<?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="com.atguigu.ssm.mapper.DeptMapper">
    <!-- 
        //获取所有的部门信息
        List<Dept> getAllDept(); 
    -->
    <select id="getAllDept" resultType="Dept">
        select did,dname from dept
    </select>
     
</mapper>

结果展示