分页+高级查询
2.1 后台
1.BaseQuery
public class BaseQuery {
//当前页:默认1L
private Long page = 1L;
//每页的条数:默认10L
private Long pageSize = 5L;
//公共字段,意思是:关键字
private String keyWords;
//增加一个gerStart(),用来设置分页的当前页第一条数据是多少条
public Long getStart(){
return (this.page - 1)*this.pageSize;
}
.....
}
2.IBaseService<T>
//高级查询和分页
PageList query(BaseQuery baseQuery);
3.BaseServiceImpl<T>
//分页查询:总条数、当前页数据
@Override
public PageList query(BaseQuery baseQuery) {
//当前页数据rows
List<T> rows = baseMapper.queryRows(baseQuery);
System.out.println("-----BaseServiceImpl层-------");
//查询出的总条数
Long total = baseMapper.queryTotal(baseQuery);
return new PageList(total,rows);
}
-
basic_util ----> PageList<T>
/**
* 分页工具类
* total
* rows
*/
public class PageList<T> {
private Long total;//总的条数
private List<T> rows = new ArrayList(); //当前页查询数据
public PageList(Long total, List<T> rows) {
this.total = total;
this.rows = rows;
}
5.MountingsMapper.xml
<mapper namespace="cn.itsource.crm.mapper.MountingsMapper">
<select id="findAll" resultType="Mountings">
select * from mountings
</select>
<sql id="wheresql">
<if test="keyWords != null and keyWords != ''">
<where>
and partsname like concat('%',#{keyWords},'%')
</where>
</if>
</sql>
<!-- 高级查询,总条数 -->
<select id="queryTotal" resultType="long" parameterType="MountingsQuery">
select count(*) from mountings
<include refid="wheresql"></include>
</select>
<!-- 当前页总数据 -->
<select id="queryRows" parameterType="MountingsQuery" resultType="Mountings">
select * from mountings
<include refid="wheresql"></include>
limit #{start},#{pageSize}
</select>
<insert id="save" parameterType="Mountings">
insert into mountings(partsname,price,num,warnnum,context,createtime)
values(#{partsname},#{price},#{num},#{warnnum},#{context},#{createtime})
</insert>
<delete id="delete" parameterType="long">
delete from mountings where id=#{id}
</delete>
<update id="update" parameterType="Mountings">
update mountings set
partsname=#{partsname},
price=#{price},
num=#{num},
warnnum=#{warnnum},
context=#{context},
createtime=#{createtime}
where id=#{id}
</update>
<select id="loadById" parameterType="long" resultType="Mountings">
select * from mountings where id=#{id}
</select>
</mapper>
6.MountingsController
//高级查询
@RequestMapping(value = "/query",method = RequestMethod.PATCH)
@ResponseBody
public PageList query(@RequestBody MountingsQuery mountingsQuery){
System.out.println("进入高级查询");
System.out.println(mountingsQuery);
PageList pageList = mountingsService.query(mountingsQuery);
for (Object row : pageList.getRows()) {
System.out.println(row);
}
return pageList;
}
2.2 前端
2.2.1 条件查询
1.准备按钮:绑定事件
<el-form-item> <el-button type="primary" v-on:click="getMountings">查询</el-button> </el-form-item>
2.给后台发请求,获得返回的res里面的总条数、当前页总数据,刷新页面
//获取用户列表
getMountings() {
let para = {
//获取当前页
page: this.page,
keyWords: this.filters.keyWords
};
//刷新效果
this.listLoading = true;
//NProgress.start();
//getUserListPage(para).then((res) => {
//发送axios请求
this.$http.patch('/mountings/query', para).then(res => {
//总条数
this.total = res.data.total;
//当前页总数据
this.mountings = res.data.rows;
this.listLoading = false;
//NProgress.done();
});
},
2.2.2 分页
1.准备分页条
<!--分页,工具条--> <el-col :span="24" class="toolbar"> <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" > </el-pagination> </el-col>
2.调用分页的方法
handleCurrentChange(val) {
//val:传入想要的页面信息
this.page = val;
this.getMountings();
},