背景:

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; }
												

Spring Boot mybatis HashMap +layui 通用分页的更多相关文章

  1. spring boot + mybatis + layui + shiro后台权限管理系统

    后台管理系统 版本更新 后续版本更新内容 链接入口: springboot + shiro之登录人数限制.登录判断重定向.session时间设置:https://blog.51cto.com/wyai ...

  2. Spring Boot + Mybatis 实现动态数据源

    动态数据源 在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库.又比如业务A要访问A数据库,业务B要访问B数据库等,都可以使用动 ...

  3. Spring boot Mybatis 整合(完整版)

    个人开源项目 springboot+mybatis+thymeleaf+docker构建的个人站点开源项目(集成了个人主页.个人作品.个人博客) 朋友自制的springboot接口文档组件swagge ...

  4. 【转】spring boot mybatis 读取配置文件

    spring boot mybatis 配置整理 一.加载mybatis的配置 1.手写配置,写死在代码里 import java.io.IOException; import java.util.P ...

  5. Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结

    Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结 这两天闲着没事想利用**Spring Boot**加上阿里的开源数据连接池**Druid* ...

  6. 详解spring boot mybatis全注解化

    本文重点介绍spring boot mybatis 注解化的实例代码 1.pom.xml //引入mybatis <dependency> <groupId>org.mybat ...

  7. (45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

    大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际 ...

  8. Spring Boot MyBatis 数据库集群访问实现

    Spring Boot MyBatis 数据库集群访问实现 本示例主要介绍了Spring Boot程序方式实现数据库集群访问,读库轮询方式实现负载均衡.阅读本示例前,建议你有AOP编程基础.mybat ...

  9. spring boot+mybatis搭建项目

    一.创建spring boot项目 1.File->New->Project 2.选择 Spring Initializr ,然后选择默认的 url 点击[Next]: 3.修改项目信息 ...

随机推荐

  1. Vue-router的三种传参方式

    第一种传递参数:name传参 两步完成name传参并显示在模板中: 第一在router/index.js中配置name属性, routes: [ { path: '/', name: 'HelloWo ...

  2. 如何升级centos到最新版本

    本文将教你如何升级centos到最新版本.centos中“update”命令可以一次性更新所有软件到最新版本.注意:不推荐使用update的y选项,-y选项会让你在安装每项更新前都进行确认(译者注:这 ...

  3. 进程Process之join、daemon(守护)、terminate(关闭)、multiprocessing之锁、信号量和事件

    一.Process 参数介绍: 1 group参数未使用,值始终为None 2 target表示调用对象,即子进程要执行的任务 3 args表示调用对象的位置参数元组,args=(1,2,'a',) ...

  4. Nodejs的安装配置及如何在sublimetext2中运行js

    Nodejs的安装配置及如何在sublimetext2中运行js听语音 | 浏览:4554 | 更新:2015-06-16 11:29 Nodejs的安装配置及如何在sublimetext2中运行js ...

  5. docker的安装,升级,与删除(最新版)

    docker安装在ubuntu上 以前叫做 Docker engine安装现在叫做docker-ce的 第一种安装办法: root下执行,sudo su - root apt-get update - ...

  6. P4783 【模板】矩阵求逆

    原题链接 https://www.luogu.org/problemnew/show/P4783 一道模板题,更重要的省选难度..... 题目要求的是一个n*n的逆矩阵,还要对大数取膜. 普通高中生: ...

  7. SPOJ-LCS Longest Common Substring 【后缀自动机】

    题目分析: 用没出现过的字符搞拼接.搞出right树,找right集合的最小和最大.如果最小和最大分居两侧可以更新答案. 代码: #include<bits/stdc++.h> using ...

  8. centos7.5误删python2.7之后,导致yum和Pythonm命令无法使用

    问题描述 最近想要将服务器上的Python2.7升级成3.x的版本时.使用了如下命令: (1)强制删除已安装python及其关联 # rpm -qa|grep python|xargs rpm -ev ...

  9. mysql 如何优化left join

    今天遇到一个left join优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录: select c.* from hotel_info_ ...

  10. Spring MVC -- Spring框架入门(IoC和DI)

    Spring MVC是Spring框架中用于Web应用开发的一个模块.Spring MVC的MVC是Model-View-Controller的缩写.它是一个广泛应用于图像化用户交互开发中的设计模式, ...