一: 前端代码html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>欢迎登陆</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/locale/bootstrap-table-zh-CN.min.js"></script>
</head>
<body>
<div class="input-group" style="float:right;">
<input type="text" id="userId" style="width:200px;height:40px;" >
<span>
<button type="button" id="eventquery" class="btn btn-success" style="width:80px;">查找</button>
</span>
</div>
<table id="table_server" ></table>
</body>
</html>
二:table插件初始化js代码
//文档加载事件
$(document).ready(function() {
// 初始化表格
initTable();
});
function initTable() {
var t = $("#table_server").bootstrapTable({
url: 'http://localhost:8080/findAll',
method: 'get',
dataType: "json",
striped: true,//设置为 true 会有隔行变色效果
undefinedText: "空",//当数据为 undefined 时显示的字符
pagination: true, //分页
// paginationLoop:true,//设置为 true 启用分页条无限循环的功能。
// showToggle: "true",//是否显示 切换试图(table/card)按钮
// showColumns: "true",//是否显示 内容列下拉框
pageNumber: 1,//如果设置了分页,首页页码
// showPaginationSwitch:true,//是否显示 数据条数选择框
pageSize: 5,//如果设置了分页,页面数据条数
pageList: [5, 10, 20, 40], //如果设置了分页,设置可供选择的页面数据条数。设置为All 则显示所有记录。
paginationPreText: '‹',//指定分页条中上一页按钮的图标或文字,这里是<
paginationNextText: '›',//指定分页条中下一页按钮的图标或文字,这里是>
// singleSelect: false,//设置True 将禁止多选
search: false, //显示搜索框
data_local: "zh-US",//表格汉化
sidePagination: "server", //服务端处理分页
queryParams: queryParams,
//将返回的值赋值给table插件的属性
responseHandler:function(res){
console.info(res)
return{
"total":res.total,
"rows": res.records,
"page":res.current
}
},
idField: "id",//指定主键列
columns: [
{
title: '#',//表的列名
field: 'id',//json数据中rows数组中的属性名
align: 'center'//水平居中
},
{
title: '产品编号',
field: 'productId',
align: 'center'
},
{
title: '购买数量',
field: 'buyNum',
align: 'center'
},
{
title: '价格',
field: 'money',
align: 'center'
},
{
title: '收货人信息',
field: 'receiverinfo',//可以直接取到属性里面的属性,赞
align: 'center'
},
{
title: '支付状态',
field: 'payState',
align: 'center',
},
{
title: '订单时间',
field: 'orderTime',//可以直接取到属性里面的属性,赞
align: 'center'
},
{
title: '用户ID',
field: 'userId',
align: 'center',
},
{
title: '操作',
align: 'center',
formatter: function (value, records, index) {//自定义显示可以写标签哦~
// <a href="#" @click="deleteItem(orderInfo.id)" >注销</a>
return '<a href=javascript:deletebyid(' + records.id + ')>删除</a> ';
}
}
]
});
}
//分页查询参数,是以键值对的形式设置的
function queryParams(params) {
return {
userId: $('#userId').val(), // 请求时向服务端传递的参数
pageNum: params.offset, // SQL语句偏移量
pageSize: params.limit, // 每页显示数量
}
}
// 搜索按钮触发事件
$(function() {
$("#eventquery").click(function() {
$('#table_server').bootstrapTable(('refresh')); // 很重要的一步,刷新url!
});
});
//点击删除按钮触发的事件
function deletebyid(id){
$.ajax({
"url":"http://localhost:8080/delete?id="+id,
"async" : true,
"type" : "GET",
"success":function (data) {
console.log(data)
alert("删除成功")
window.location.reload();
location
},
"error":function (res) {
console.log(res);
}
});
}
三 后端采用springboot+mybatisplus
1.创建controller,service,mapper以及实体类,因为采用的是mybatisplus所以和普通的采用mybatis创建的工程会有所差异,可自行百度springboot集成mybatisplus
2.springboot加载mybatisplus的分页插件
@MapperScan("cn.sanjin.springboot.mapper")
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType("mysql");
return paginationInterceptor;
}
}
3.分页的逻辑实现
因为采用的是mybatisplus的分页插件所以后台逻辑实现非常方便简单
@Controller
public class PageController {
@Autowired
private OrderInfoMapper orderInfoMapper;
@RequestMapping("/findAll")
@ResponseBody
public Object findAll(Integer pageNum,Integer pageSize,String userId){
//pageNum是查询第几页,pageSize是每页的大小,userId是查询条件
Integer pageNumber = (pageNum + pageSize) / pageSize;
Page<OrderInfo> page = new Page<>(pageNumber, pageSize);
if (userId.isEmpty()) {//如果查询条件为空则进行全表查询
IPage<OrderInfo> emps = orderInfoMapper.selectPage(page, null);
return emps;
} else {//按查询条件进行查询,queryWrapper是进行条件封装的
IPage<OrderInfo> emps = orderInfoMapper.selectPage(page,
new QueryWrapper<OrderInfo>().eq("userId", userId));
return emps;
}
@RequestMapping("/delete")
@ResponseBody
public Integer deleteById(Integer id) {
// System.out.println(orderinfo.getId());
Integer result =orderInfoMapper.deleteById(id);
System.out.println(result);
return result;
}
}
注:以上借鉴了网上很多文章非常感谢他们,代码只是demo,仅供学习参考,第一次写博客,欢迎大家多多指教!!!