SpringBoot + mybatisplus 实现数据分页查询

项目使用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;
    }

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值