背景:
mybatis 常用數據查詢的方法都是先建實體類,再建Mapper,最后寫Service,如果只是單純的去查詢數據顯示,這樣操作太麻煩。本文就以mybatis +layui創建通用分頁類,簡化這一操作,提升開發效率(沒考慮注入情況讀者自行修改)
有需要的同學可以下載 示例代碼
先看效果
1.添加靜態文件資源
把UI靜態文件拷入resources/static文件夾中
2.添加分頁dao
@Mapper @Repository public interface PageDao { @Select("select count(1) from ${table}") int findCountAll(@Param("table") String table); @Select("select * from ${table} limit #{pagestart}, #{pagesize}") List<HashMap<String, Object>> findMapPageAll(@Param("table") String table, @Param("pagestart") int pagestart, @Param("pagesize") int pagesize); @Select("select count(1) from ${table} where ${strWhere}") int findCount(@Param("table") String table, @Param("strWhere") String strWhere); @Select("select ${fileds} from ${table} where ${strWhere} ${order} limit #{pagestart}, #{pagesize}") List<HashMap<String, Object>> findMapPage(@Param("table") String table, @Param("fileds") String fileds, @Param("order") String order, @Param("strWhere") String strWhere, @Param("pagestart") int pagestart, @Param("pagesize") int pagesize); @Select("select ${fileds} from ${table} where ${strWhere} ${order}") List<HashMap<String, Object>> findMapAll(@Param("table") String table, @Param("fileds") String fileds, @Param("order") String order, @Param("strWhere") String strWhere ); }
3.添加PageService
@Service public class PageService { @Autowired PageDao pageDao; public int findCount(String table){ return pageDao.findCountAll(table); } public List<HashMap<String, Object>> findMapPage(String table, int pagestart, int pagesize){ return pageDao.findMapPageAll(table,pagestart, pagesize); } public int findCount(String table, String strWhere){ return pageDao.findCount(table,strWhere); } public List<HashMap<String, Object>> findMapPage(String table,String fileds,String order,String strWhere,int pagestart,int pagesize){ return pageDao.findMapPage(table,fileds,order,strWhere,pagestart,pagesize); } public List<HashMap<String, Object>> findMapAll(String table,String fileds,String order,String strWhere){ return pageDao.findMapAll(table,fileds,order,strWhere); } }
4.建立Controller
@Autowired PageService pageService; @RequestMapping(value = "/pagelist", method = {RequestMethod.GET, RequestMethod.POST}) public String pagelist() { return "pagelist"; } @RequestMapping("/pagelsitquery") @ResponseBody public String pagelsitquery(HttpServletResponse response, ModelMap modelMap, PageSearch pageConf) throws IOException { int currentPage = pageConf.getCurrentPage(); int pageSize = pageConf.getPageSize(); int pagestart=(currentPage-1)*pageSize; String tables = "groupidinfo t "; String files = "t.*"; String order = "order by t.id desc "; String where = "1=1"; if(!StringUtils.isBlank(pageConf.getKey())){ String key=pageConf.getKey(); where=where+" and groupId like '%"+key+"%' "; } int total=pageService.findCount(tables,where); List<HashMap<String, Object>> map= pageService.findMapPage(tables,files,order,where,pagestart,pageSize); Map<String, Object> obj=new HashMap<String,Object>(); obj.put("total",total); obj.put("list",map); ObjectMapper objectMapper = new ObjectMapper(); String jsonString=objectMapper.writeValueAsString(obj); return jsonString; }
5.創建HTML,關鍵JS
/** * 初始化layui分頁 */ function initLayPage(pageConf) { if(!pageConf){ pageConf ={}; pageConf.pageSize = 20; pageConf.currentPage = 1; } key=$('#key').val(); pageConf.key=key; console.log(pageConf); $.post("pagelsitquery", pageConf, function (data) { layui.use(['laypage', 'layer'], function () { var page = layui.laypage; page.render({ elem: 'layui', count: data.total, curr: pageConf.currentPage, limit: pageConf.pageSize, first:"首頁", last:"尾頁", layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'], jump: function (obj, first) { if (!first) { pageConf.currentPage = obj.curr; pageConf.pageSize = obj.limit; initLayPage(pageConf); } } }); fillTable(data.list,(pageConf.currentPage - 1) * pageConf.pageSize); //頁面填充 }) },"json"); } //填充表格數據 function fillTable(data,num) { var info = ''; $.each(data, function (index, obj) { info += '<tr>'+ '<td>' + getValue(obj.id) + '</td>'+ '<td>' + getValue(obj.groupId) + '</td>'+ '<td>' + getValue(obj.version) + '</td>'+ '<td>' + getValue(obj.cluster) + '</td>'+ '<td>' + getValue(obj.timeout) + '</td>'+ '<td>' + getValue(obj.retries) + '</td>'+ '</tr>'; }); //alert(info); $("#tab_list").html(info); } function getValue(v) { if(v==undefined)return ""; return v; }