背景:

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. BBS 502 BadGateway 原因分析

    说明: LNMP架构. crontab里有每隔20分钟重启php的任务:然后我用python写了个每1分钟检测php-cgi进程是否存在的脚本,如果不存在则调用重启php的脚本,并邮件通知管理员.cr ...

  2. Insert Into select 与 Select Into 哪个更快?

    在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SELECT INTO : 那么二者语法上有什么区别?性能上又如何呢? 围绕着这两个 ...

  3. SD第九届省赛B题 Bullet

    Bullet Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description In G ...

  4. Vivado寄存器初始值问题

    前言 本复位只针对Vivado中的寄存器复位. 什么时候需要复位?到底要不要复位?怎么复位?复位有什么卵用? 该复位的寄存器需要复位,复位使得寄存器恢复初始值,有的寄存器并不需要复位(数据流路径上). ...

  5. phpStudy The requested URL /web/index.php was not found on this server

    1.原因 phpStudy的httpd-conf 与 vhosts-ini 的目录设置错了 2.解决 分别打开httpd-conf 与 vhosts-ini 2个文件,搜索WWW,把里面的路径改成你的 ...

  6. 洛谷P2120 [ZJOI2007]仓库建设 斜率优化DP

    做的第一道斜率优化\(DP\)QwQ 原题链接1/原题链接2 首先考虑\(O(n^2)\)的做法:设\(f[i]\)表示在\(i\)处建仓库的最小费用,则有转移方程: \(f[i]=min\{f[j] ...

  7. Ceph集群搭建及Kubernetes上实现动态存储(StorageClass)

    集群准备 ceph集群配置说明   节点名称 IP地址 配置 作用 ceph-moni-0 10.10.3.150 centos7.5 4C,16G,200Disk 管理节点,监视器 monitor ...

  8. mongodb3.6集群搭建:分片+副本集

    mongodb是最常用的noSql数据库,在数据库排名中已经上升到了前五.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...

  9. [JDK8]读写锁的改进:StampedLock

    StampedLock是Java8引入的一种新的锁机制,简单的理解,可以认为它是读写锁的一个改进版本,读写锁虽然分离了读和写的功能,使得读与读之间可以完全并发,但是读和写之间依然是冲突的,读锁会完全阻 ...

  10. DirectX11 With Windows SDK--15 几何着色器初探

    前言 从这一部分开始,感觉就像是踏入了无人深空一样,在之前初学DX11的时候,这部分内容都是基本上跳过的,现在打算重新认真地把它给拾回来. DirectX11 With Windows SDK完整目录 ...