SpringBoot + bootstrap-table 实现表格查询并分页

﹏ヽ暗。殇╰゛Y 2024-04-23 20:12 223阅读 0赞

bootstrap-table表格:

1、需要引入的 css 和 js 文件:

  1. <!-- Latest compiled and minified CSS -->
  2. <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.21.1/dist/bootstrap-table.min.css">
  3. <!-- Latest compiled and minified JavaScript -->
  4. <script src="https://unpkg.com/bootstrap-table@1.21.1/dist/bootstrap-table.min.js"></script>
  5. <!-- Latest compiled and minified Locales -->
  6. <script src="https://unpkg.com/bootstrap-table@1.21.1/dist/locale/bootstrap-table-zh-CN.min.js"></script>
  7. <!-- jquery -->
  8. <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>

2、在 html 页面中 body 标签中定义一个 form 查询表单, 一个div 用于放数据。

  1. <!-- 查询表单 -->
  2. <div class="card" style="padding: 16px; margin: 0px">
  3. <b style="margin-bottom: 6px">查询内容:</b>
  4. <form class="form-inline" id="myFrom">
  5. <label for="name" class="mb-2 mr-sm-2">姓名:</label>
  6. <input type="text" class="form-control mb-2 mr-sm-2" id="name" name="name" th:value="${param.name}" placeholder="请输入姓名">
  7. <label for="career" class="mb-2 mr-sm-2">职业:</label>
  8. <input type="text" class="form-control mb-2 mr-sm-2" id="career" name="career" th:value="${param.career}" placeholder="请输入职业">
  9. <label for="date" class="mb-2 mr-sm-2">入职时间:</label>
  10. <input type="date" class="form-control mb-2 mr-sm-2" id="date_begin" name="date_begin" th:value="${param.dateBegin}" placeholder="起始时间">
  11. <label for="date_end" class="mb-2 mr-sm-2">-</label>
  12. <input type="date" class="form-control mb-2 mr-sm-2" id="date_end" name="date_end" th:value="${param.dateEnd}" placeholder="截止时间">
  13. <button class="btn btn-primary mb-2" style="margin-right: 10px" id="search_btn">查询</button>
  14. </form>
  15. </div>
  16. <!-- 结果数据 -->
  17. <div id="result" >
  18. <table id="tb" class="table table-bordered"></table>
  19. </div>

3、js

  1. $("#tb").bootstrapTable({
  2. url: "http://localhost:8080/xxx",
  3. method: 'get',
  4. dataType: 'json',
  5. striped: true, //是否显示行间隔色
  6. pageNumber: 1, //初始化加载第一页
  7. pagination: true, //是否显示分页条
  8. sidePagination : 'server',// server:服务器端分页|client:前端分页
  9. pageSize: 10, //一页显示的行数
  10. pageList: [5, 10, 20], //选择每页显示多少行,数据过少时可能会没有效果
  11. showRefresh:false,//刷新按钮
  12. queryParams : queryParams,// 查询参数
  13. responseHandler:responseHandler,// 请求数据成功后,渲染表格前调用的方法
  14. columns:[
  15. {
  16. title:'姓名',
  17. field:'name',
  18. align: 'center'
  19. },
  20. {
  21. title:'职业',
  22. field:'career',
  23. align: 'center'
  24. },
  25. {
  26. title:'入职时间',
  27. field:'date',
  28. align: 'center',
  29. },
  30. // {
  31. // title:'时间',
  32. // field:'sj',
  33. // align: 'center',
  34. // formatter: function (value, row, index){
  35. // return new Date(value).Format("yyyy-MM-dd HH:mm:ss");
  36. // 时间的格式化
  37. // }
  38. // }
  39. ]
  40. });
  41. // 查询按钮事件
  42. $('#search_btn').click(function() {
  43. $('#tb').bootstrapTable('refresh');
  44. })
  45. /**
  46. * 获取返回的数据的时候做相应处理,让bootstrap table认识我们的返回格式
  47. * @param {Object} res
  48. */
  49. function responseHandler(res) {
  50. if(res.code === 20000) {
  51. return {
  52. total: res.data.total,
  53. rows: res.data.records
  54. };
  55. }
  56. }
  57. //请求服务数据时所传查询参数
  58. function queryParams(params){
  59. return{
  60. pageSize: params.limit, //页面大小
  61. pageNum: (params.offset / params.limit) + 1, //页码
  62. name : $("#name").val(),
  63. career: $("#career").val(),
  64. dateBegin : $("#date_begin").val(),
  65. dateEnd : $("#date_end").val()
  66. }
  67. }

4、后端接口:

  1. @GetMapping("/getAll")
  2. @ResponseBody
  3. public Result getAllBd(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  4. @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize,
  5. @RequestParam(name = "name", required = false, defaultValue = "") String name,
  6. @RequestParam(name = "career", required = false, defaultValue = "") String career,
  7. @RequestParam(name = "dateBegin", required = false, defaultValue = "") String dateBegin,
  8. @RequestParam(name = "dateEnd", required = false, defaultValue = "") String dateEnd) {
  9. // 分页参数
  10. Page<Employee> pageParam = new Page<>(pageNum, pageSize);
  11. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  12. Date beginDate = null;
  13. Date endDate = null;
  14. try {
  15. if (StringUtils.isEmpty(pfsjBegin)) {
  16. beginDate = format.parse("1950-01-01");
  17. } else {
  18. beginDate = format.parse(dateBegin);
  19. }
  20. if (StringUtils.isEmpty(pfsjEnd)) {
  21. endDate = format.parse(format.format(new Date()));
  22. } else {
  23. endDate = format.parse(dateEnd);
  24. }
  25. } catch (ParseException e) {
  26. e.printStackTrace();
  27. }
  28. // selectPage 自定义的方法
  29. Page<Employee> pageData = service.selectPage(pageParam, name, career, beginDate, endDate);
  30. return Result.ok(pageData);
  31. }

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读