背景:

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. Linux 学习 (七) 挂载命令 & 用户登陆查看

    Linux达人养成计划 I 学习笔记 挂载命令 mount:查询系统中已经挂载的设备 mount -a:根据配置文件 /etc/fstab 的内容,自动挂载 mount [-t 文件系统] [-o 特 ...

  2. [模板] 二分图博弈 && BZOJ2463:[中山市选2009]谁能赢呢?

    二分图博弈 from BZOJ 1443 游戏(二分图博弈) - free-loop - 博客园 定义 1.博弈者人数为两人,双方轮流进行决策. 2.博弈状态(对应点)可分为两类(状态空间可分为两个集 ...

  3. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  4. 修改帝国cms栏目后,如何更新

    修改栏目后,要依次做如下更新: 1.    2.  3.    如果只是修改了栏目里的属性,只需要做第三步就行了

  5. es上的的Watcher示例

    Watcher插件配置(创建预警任务) watcher目前是沒有界面配置的,需要通过Resfulapi调用创建.管理.更新预警任务 创建一个Watcher任务的流程是怎样的? 我们先来看下创建一个预警 ...

  6. javascript: Element.getBoundingClientRect() 获取元素在网页上的坐标位置

    来自:https://blog.csdn.net/weixin_42895400/article/details/81811095?utm_source=blogxgwz1 Element.getBo ...

  7. python操作文件练习,配置haproxy

    在使用python操作文件的时候,特别是对于网络设备,通常操作配置文件,会简化配置量,配置文件加载到内存中,运行时使用的是内存中的配置,内存中配置修改后立即生效,如果不将配置内容保存到硬盘中,则下次重 ...

  8. jq常用操作

    1. 将滚动条置于底部 var srcH = $(".msg-IOC").prop("scrollHeight");$('.msg-IOC').scrollTo ...

  9. JS异步加载的三种方案

    js加载的缺点:加载工具方法没必要阻塞文档,个别js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作. 有些工具方法需要按需加载,用到再加载,不用不加载. 一.def ...

  10. ES6 Class语法学习

    前言 大多数面向对象的编程语言都支持类和类继承的特性,而JS却不支持这些特性,只能通过其他方法定义并关联多个相似的对象,这种状态一直延续到了ES5.由于类似的库层出不穷,最终还是在ECMAScript ...