分頁外掛,和反向生成工程進行增刪查改操作
反向生成工程可以直接通過資料庫表生成對應的實體類和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])聯絡我