项目使用SpringBoot框架,搭配mybatisplus,实现数据的分页查询。
controller:
@Autowired
private BdcardService tBusBdcardService;
@GetMapping("/page")
public ApiResult<BdcardQuery> pageBusBdcardByQuery(BdcardQuery tBusBdcardQuery) {
//默认不分页
return new ApiResult<>(tBusBdcardService.pageBusBdcardByQuery(tBusBdcardQuery));
}
查询条件body:
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.rdss.bus.model.entity.Bdcard;
import com.rdss.common.entity.BaseEntity;
import lombok.Data;
// Bdcard是业务的实体类
// BdcardQuery 是查询条件的封装
// page是Mybatis的封装
// BaseEntity 是基类
@Data
public class BdcardQuery extends Page<Bdcard> implements BaseEntity {
/**
* 北斗卡id
*/
private Integer id;
/**
* 卡号
*/
private String num;
/**
* 类型
*/
private Integer type;
/**
* 卡所属
*/
private String username;
/**
* 北斗卡的状态:1-启用;2-禁用
*/
private Integer status;
/*
* 用户id
*/
private Integer userId;
/*
*指挥机id,即北斗卡父卡id
*/
private Integer parentId;
/**
* 卡所属系统
*/
private Integer system;
/**
* 通播号
*/
private String broadcastNum;
/**
* 所属机构名称
*/
private String oName;
/**
* 所属机构id
*/
private Integer organId;
private List<Integer> organIds;
/**
* form:form=1为北斗卡,form=2为4G卡
*/
private Integer form;
private Map<String , Object> params;
@Override
public Map<String , Object> getParams() {
if(params==null){
params = new HashMap<>();
}
return params;
}
}
业务基类:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* Entity基类
*/
public interface BaseEntity
{
Map<String, Object> getParams();
}
service:
import com.baomidou.mybatisplus.extension.service.IService;
public interface BdcardService extends IService<Bdcard> {
BdcardQuery pageBusBdcardByQuery(BdcardQuery query);
}
ServiceImpl :
@Service
public class BdcardServiceImpl extends ServiceImpl<BdcardMapper, Bdcard> implements BdcardService {
@Autowired
private BdcardMapper busBdcardMapper;
public BdcardQuery pageBusBdcardByQuery(BdcardQuery query) {
//对卡号特殊字符字段进行查询
query.setNum(SQLFilter.sqlInject(query.getNum()));
//对卡所属特殊字符字段进行查询
query.setUsername(SQLFilter.sqlInject(query.getUsername()));
//对通播号进行模糊查询特殊字符
query.setBroadcastNum(SQLFilter.sqlInject(query.getBroadcastNum()));
query.setDesc("id");
busBdcardMapper.pageByQuery(query);
return query;
}
}
Mapper:
import com.baomidou.mybatisplus.core.metadata.IPage;
public interface BdcardMapper extends BaseMapper<Bdcard> {
IPage<Bdcard> pageByQuery(@Param("query") BdcardQuery query);
}
mapper.xml
<select id="pageByQuery" resultMap="BdcardVoMap" >
select b.id, b.num, b.system, b.type, b.frequency, b.level, b.source, b.status, b.broadcast_num, b.using_type, b.create_time
from t_bus_bdcard b
<where>
<choose>
<when test="query.form==2">
and b.system=3
</when>
<when test="query.form==1">
and b.system != 3
</when>
<otherwise>
<if test="query.system!=null">
and b.system=#{query.system}
</if>
</otherwise>
</choose>
<if test="query.num != '' and query.num != null">
and b.num like concat('%',#{query.num},'%')
</if>
<if test="query.type != null">
and b.type=#{query.type}
</if>
<if test="query.userId != null">
and b.user_id = #{query.userId}
</if>
<if test="query.status != null">
and b.status=#{query.status}
</if>
<if test="query.broadcastNum !='' and query.broadcastNum !=null">
and b.broadcast_num like concat('%',#{query.broadcastNum},'%')
</if>
<if test="query.organId != null">
and b.organ_id=#{query.organId}
</if>
<if test="query.organIds!=null and query.organIds.size>0">
and b.organ_id in
<foreach collection="query.organIds" item="organId" open="(" close=")" separator=",">
#{organId}
</foreach>
</if>
and b.del_flag=0
</where>
</select>
MybatisPlus分页插件
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.rdss.bus.mapper")
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
//分页单页最大条数,默认500
paginationInterceptor.setLimit(20000);
return paginationInterceptor;
}
}