分页插件,和反向生成工程进行增删查改操作

反向生成工程可以直接通过数据库表生成对应的实体类和dao层mapper配置文件
在反向生成的项目配置文件中修改以下几点
  1> <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/db01" userId="root"
            password="189828">

        </jdbcConnection>
    3306/后面是数据库名 userId是数据库登录账号 password登录密码

  2>  <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.kgc.pojo"
            targetProject=".\src">
    targetPackage是实体类的包名

  3>  <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="com.kgc.dao.mapper" 
            targetProject=".\src">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
    targetPackage是mapper映射文件位置包名

  4>  <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="com.kgc.dao" 
            targetProject=".\src">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
    targetPackage是mapper接口生成的位置包名,就是之前的dao层包名

  5>  <!-- 指定数据库表 -->
        <table tableName="emp">
            <property name="useActualColumnNames" value="true"/>    
        </table>
        
        <table tableName="dept">
            <property name="useActualColumnNames" value="true"/>
        </table>
    tableName是数据库的表名,多个表直接复制多个table即可
    匹配数据库字段的命名规则<property name="useActualColumnNames" value="true"/>

所得配置设置完成之后运行代码既可以,然后将生成的包直接复制到你的项目里面


分页插件

 <!-- 版本号控制 -->
    <properties>
        <pagehelper.version>5.1.2</pagehelper.version>
    </properties>
    <dependencies>
      <!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>${pagehelper.version}</version>
        </dependency>
     </dependencies>

  因为之前使用了反向生成工程,dao层和mapper配置文件,实体类不用写
  但是分页的操作要在业务层的实现类中编写
@Service
@Transactional
public class EmpServiceImpl implements EmpService {

    @Autowired
    private EmpMapper empMapper;
    @Autowired
    private DeptMapper depetMapper;

    
    public PageInfo<Emp> getEmpList(Integer pageIndex, Integer pageSize, EmpSearch empSearch) {
        EmpExample example=new EmpExample();
        Criteria criteria=example.createCriteria();
        if(empSearch!=null) {
            if(empSearch.getId()!=null&&empSearch.getId()!=-1) {
                criteria.andDeptidEqualTo(empSearch.getId());
            }
            if(StringUtils.isNotBlank(empSearch.getEmpName())){
                criteria.andEmpnameLike("%"+empSearch.getEmpName()+"%");
            }
            if(empSearch.getMinSal()!=null) {
                criteria.andSalGreaterThanOrEqualTo(empSearch.getMinSal());
            }
            if(empSearch.getMaxSal()!=null) {
                criteria.andSalLessThanOrEqualTo(empSearch.getMaxSal());
            }
        }
        //分页设置
        PageHelper.startPage(pageIndex, pageSize);
        PageInfo<Emp> info=new PageInfo<Emp>(emplist);
        return info;
    }
注意事项
 1、 因为没有做连表查询,所以在实体类中将主表dept生成的实体类Dept作为从表emp生成的实体类Emp的属性
   public class Emp {
    private Integer id;

扫描二维码关注公众号,回复: 4092781 查看本文章

    private String empname;

    private Integer sex;
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date birthday;

    private Integer deptid;

    private Double sal;

   private Dept dept;

    然后在查询的时候分步查询,然后将主表的实体类set到从表的实体类中
    List<Emp> emplist=empMapper.selectByExample(example);
        for(Emp emp:emplist) {
            Integer deptId=emp.getDeptid();
            Dept dept=depetMapper.selectByPrimaryKey(deptId);
            emp.setDept(dept);
        }

    
   
  2、分页操作中涉及到带条件的分页查询我们要对条件进行处理
    EmpExample example=new EmpExample();
    Criteria criteria=example.createCriteria();
    if(empSearch!=null) {
        if(empSearch.getId()!=null&&empSearch.getId()!=-1) {
            criteria.andDeptidEqualTo(empSearch.getId());
        }
        if(StringUtils.isNotBlank(empSearch.getEmpName())){
            criteria.andEmpnameLike("%"+empSearch.getEmpName()+"%");
        }
        if(empSearch.getMinSal()!=null) {
            criteria.andSalGreaterThanOrEqualTo(empSearch.getMinSal());
        }
        if(empSearch.getMaxSal()!=null) {
            criteria.andSalLessThanOrEqualTo(empSearch.getMaxSal());
        }
    }
  3、分页是根据页号和页容量来进行操作
     PageHelper.startPage(pageIndex, pageSize);
  4、最后将查询的的结果赋值给PageInfo<Emp>
     PageInfo<Emp> info=new PageInfo<Emp>(emplist);

    在页面回显数据如果是用的session存储${sessionScope.info.list}

 控制层的操作主要在于带条件的分页查询,增删改和之前的一样
    @RequestMapping("/index")
    public String list(@RequestParam(value="pageIndex",required=true,defaultValue="1") Integer pageIndex,
            EmpSearch empSearch,Model model,HttpSession session) {

            List<Dept> listdept=deptService.getDeptList();
            PageInfo<Emp> info=empService.getEmpList(pageIndex, 3, empSearch);
            session.setAttribute("listdept",listdept);
            model.addAttribute("info",info);
            model.addAttribute("empSearch",empSearch);
        return "/index";
    }
   empSearch是表单中查询的条件,为了方便操作将他们封装在一个工具类中,pageIndex为当前页号,在第一次查询的时候因为没有值,所以要在第一次查询的时候赋默认值1,

   分页增删查改所有操作
   @Controller
@RequestMapping("/emp")
public class ControllerTest {
    @Autowired
    private EmpService empService;
    @Autowired
    private DeptService deptService;
    
    @RequestMapping("/index")
    public String list(@RequestParam(value="pageIndex",required=true,defaultValue="1") Integer pageIndex,
            EmpSearch empSearch,Model model,HttpSession session) {
            List<Dept> listdept=deptService.getDeptList();
            PageInfo<Emp> info=empService.getEmpList(pageIndex, 3, empSearch);
            session.setAttribute("listdept",listdept);
            model.addAttribute("info",info);
            model.addAttribute("empSearch",empSearch);
        return "/index";
    }
    
    @RequestMapping("/{page}")
    public String list(@PathVariable("page") String page) {    
        return "/"+page;
    }
    
    @RequestMapping(value="/insert",method=RequestMethod.POST,produces="text/html;charset=UTF-8")
    @ResponseBody
    public String insert(Emp emp) {
        if(empService.insert(emp)) {
            return "<script>alert('添加成功');location.href='/emp/index'</script>";
        }
        return "<script>alert('添加失败');history.go(-1)</script>";
    }
    @RequestMapping(value="/delete/{id}", method=RequestMethod.GET,produces="text/html;charset=UTF-8")
    @ResponseBody
    public String delete(@PathVariable("id") Integer id) {
        if(empService.delete(id)) {
            return "<script>alert('删除成功');location.href='/emp/index'</script>";
        }else {
            return "<script>alert('删除失败');history.go(-1)</script>";
        }
    }
    @RequestMapping(value="/proUpdate/{id}",method=RequestMethod.GET,produces="text/html;charset=UTF-8")
    public String proUpdate(@PathVariable("id") Integer id,Model model) {
        Emp emp=empService.getEmp(id);
        model.addAttribute("emp", emp);
        return "/update";
    }
    //修改操作
    @RequestMapping(value="/update",method=RequestMethod.POST,produces="text/html;charset=UTF-8")
    @ResponseBody
    public String update(Emp emp) {
        if(empService.update(emp)) {
            return "<script>alert('修改成功');location.href='/emp/index'</script>";
        }else {
            return "<script>alert('修改失败');history.go(-1)</script>";
        }
    }
    //信息详细
    @RequestMapping("/view{id}")
    public String view(@PathVariable("id") Integer id,Model model) {
        Emp emp=empService.getEmp(id);
        Integer deptid=emp.getDeptid();
        Dept dept=deptService.getDet(deptid);
        emp.setDept(dept);
        model.addAttribute("emp", emp);
        return "/view";
    }
    
}

方向生成工程在我的资源里面可以下载,或者直接邮箱([email protected])联系我

猜你喜欢

转载自blog.csdn.net/baoshuang189828/article/details/83782354