背景:

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. Delphi Create(nil), Create(self), Create(Application)的区别

    最近的项目中经常在程序中动态创建控件,势必用到Create. 但是随之而来的问题就是动态创建的控件是否可以正确的释放内存? 以及 Create(nil), Create(self), Create(A ...

  2. springboot jpa 复合主键

    https://blog.csdn.net/wyc_cs/article/details/9031991 创建一个复合主键类 public class LevelPostMultiKeysClass ...

  3. Nginx ServerName指令

    L:47

  4. Java基础-1

    基础知识 1.进制 1.十进制 2.二进制 3.十六进制 2.十六进制转换 二进制转换 十进制转换

  5. xadmin 组件拓展自定义使用

    xadmin 组件相关可选自定义字段 list_display 功能 设置默认的显示字段(列) 配置 list_display = ['name', 'desc', 'detail', 'degree ...

  6. saltstack主机管理项目:动态调用插件解析-模块解析(五)

    一.动态调用插件解析 1.目录结构 1.base_module代码解析: def syntax_parser(self,section_name,mod_name,mod_data): print(& ...

  7. java BIO/NIO/AIO 学习

    一.了解Unix网络编程5种I/O模型 1.1.阻塞式I/O模型 阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误 ...

  8. Shell脚本之grep

    1. 过滤空行   grep -v ^$

  9. RMQ(ST表)

    #include<iostream> #include<cstdio> #include<cmath> using namespace std; int N, M, ...

  10. Run Configurations(Debug Configurations)->Arguments里填写program arguments和VM arguments

    如图: 1.program arguments存储在String[] args里 2.VM arguments设置的是虚拟机的属性,是传给java虚拟机的.KV形式存储的,是可以通过System.ge ...