1. 程式人生 > >分頁外掛,和反向生成工程進行增刪查改操作

分頁外掛,和反向生成工程進行增刪查改操作

反向生成工程可以直接通過資料庫表生成對應的實體類和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;

    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])聯絡我