按条件分页查询

两盒软妹~` 提交于 2019-12-31 09:02:07

在springboot中,按照检索条件查询内容,并实现分页
Controller

 /**
     * 查询用户信息-全部
     */
    @GetMapping("/getUserInfoAll")
    @ApiOperation(value = "查询用户信息-全部")
    public IPage<UserInfo> getUserInfoAll(BindingAwareModelMap conditions, @RequestParam(value = "current", defaultValue = "1", required = false) int current,
                                          @RequestParam(value = "size", defaultValue = "10", required = false) int size,Integer zxzt,
                                          @RequestParam(required = false)String yhxm,@RequestParam(required = false)String yhxb,@RequestParam(required = false)String yhzc,
                                          @RequestParam(required = false)String yddh,@RequestParam(required = false)String dlzh,@RequestParam(required = false)String jgid) {
        if (zxzt.equals(0)){
            return userInfoService.selectDeleteUserInforPage(conditions, current, size,yhxm,yhxb,yhzc,yddh,dlzh,jgid);
        }else {
            return userInfoService.selectUserInfoPage(conditions, current, size,yhxm,yhxb,yhzc,yddh,dlzh,jgid);
        }


    }

Service

    /**
     * 查询用户信息分页
     *
     * @param current 当前页
     * @param size    每页显示
     * @return 用户信息列表
     */
    IPage<UserInfo> selectUserInfoPage(Map<String,Object> conditions, long current, long size,String yhxm,String yhxb,String yhzc,String yddh,String dlzh,String jgid);

    IPage<UserInfo> selectDeleteUserInforPage(Map<String,Object> conditions,long current,long size,String yhxm,String yhxb,String yhzc,String yddh,String dlzh,String jgid);

ServiceImpl

   @Override
    public IPage<UserInfo> selectUserInfoPage(Map<String,Object> conditions, long current, long size,String yhxm,String yhxb,String yhzc,String yddh,String dlzh,String jgid) {
        QueryWrapper<UserInfo> query = Wrappers.query();
        boolean all = false;
        if (conditions.containsKey("zhzt") && "1".equals(conditions.get("zhzt"))) {
            all = true;
        }
        conditions.remove("zhzt");

        conditions.forEach((key, value) -> {
            query.like(key, value);
        });
        Page<UserInfo> userInfoPage = new Page<>(current, size);
        IPage<UserInfo> page = null;
        if (all) {
        } else {
            if (jgid != null){
                page = baseMapper.selectJgmc(userInfoPage,query,jgid);
            }else{
                page = baseMapper.selectUserWithOutStatus(userInfoPage, query,yhxm,yhxb,yhzc,yddh,dlzh,jgid);
            }
        }
        return page;
    }

    @Override
    public IPage<UserInfo> selectDeleteUserInforPage(Map<String, Object> conditions, long current, long size,String yhxm,String yhxb,String yhzc,String yddh,String dlzh,String jgid) {
        QueryWrapper<UserInfo> query = Wrappers.query();
        boolean all = false;
        if(conditions.containsKey("zhzt")&& "1".equals(conditions.get("zhzt"))) {
            all = true;
        }
        conditions.remove("zhzt");

        conditions.forEach((key,value)->{
            query.like(key,value);
        });
        Page<UserInfo> userInfoPage = new Page<>(current, size);
        IPage<UserInfo> page = null;
        if(all){
        }else {
            if (jgid != null){
                page = baseMapper.selectJgmc(userInfoPage,query,jgid);
            }else{
                page = baseMapper.selectDeleteUserWithOutStatus(userInfoPage, query,yhxm,yhxb,yhzc,yddh,dlzh,jgid);
            }
        }
        return page;
    }

Mapper

/**
     * 查询所有的用户信息(包括已经被逻辑删除的)
     * @param page
     * @param queryWrapper
     * @return
     */
    IPage<UserInfo> selectUserWithOutStatus(IPage<UserInfo> page, @Param(Constants.WRAPPER) Wrapper<UserInfo> queryWrapper,
                                            @Param("YHXM")String yhxm,@Param("YHXB")String yhxb,@Param("YHZC")String yhzc,
                                            @Param("YDDH")String yddh,@Param("DLZH")String dlzh,@Param("JGBMXXBID")String jgid);

    IPage<UserInfo> selectDeleteUserWithOutStatus(IPage<UserInfo> page,@Param(Constants.WRAPPER)Wrapper<UserInfo> queryWrapper,
                                                  @Param("YHXM")String yhxm,@Param("YHXB")String yhxb,@Param("YHZC")String yhzc,
                                                  @Param("YDDH")String yddh,@Param("DLZH")String dlzh,@Param("JGBMXXBID")String jgid);

xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhicheng.javaplat.modular.user.dao.UserInfoMapper">

    <sql id="baseField" >
yhxx.YHZHXXBID
,yhxx.YHXM
,yhxx.YHXB
,yhxx.SFZH
,yhxx.YHZC
,yhxx.YDDH
,yhxx.GLYBS
,yhxx.SFSQ
,yhxx.DLZH
,yhxx.DLMM
,yhxx.ZHZT
,yhxx.SHSJ
,yhxx.SHRYID
,yhxx.SHJL
,yhxx.SHWTGYY
,yhxx.CJSJ
,yhxx.CJRYID
,yhxx.JGID
,yhxx.BMID
    </sql>
    <select id="selectUserWithOutStatus" resultType="com.zhicheng.javaplat.modular.user.entity.UserInfo">
        select YHXM,YHXB,YDDH,DLZH,ZHZT,CJSJ,cjrmc,sfsq,sfzh,glybs,YHZHXXBID,listagg(JGBMMC,',') within group (order by JGBMMC) JGBMMC,listagg(jgbms,',') within group (order by jgbms) jgbms
        from
        (select distinct jgbm.JGBMXXBID jgbms,yhxx.YHZHXXBID,yhxx.CJSJ,yhxx.CJRYID,yhjg.ZXZT,jgbm.JGBMMC
        ,cjrxx.yhxm cjrmc,yhxx.YHXM ,yhxx.YHXB,yhxx.YDDH ,yhxx.DLZH,yhxx.YHZC,yhxx.zhzt,yhxx.sfsq,yhxx.sfzh,yhxx.glybs
        from qx_yhzhxxb yhxx
        left join qx_yhzh_jgbm yhjg on yhxx.yhzhxxbid = yhjg.yhzhxxbid
        left join qx_jgbmxxb jgbm on yhjg.jgbmxxbid = jgbm.jgbmxxbid
        left join QX_YHZHXXB cjrxx on yhxx.yhxm = cjrxx.yhxm
        where (yhjg.ZXZT=0 or yhjg.zxzt is null)
        <if test='YHXM!=null and YHXM != ""'>
            AND yhxx.YHXM like concat(concat('%',#{YHXM}), '%')
        </if>
        <if test='YHXB!=null and YHXB != ""'>
            AND yhxx.YHXB like concat(concat('%',#{YHXB}), '%')
        </if>
        <if test='YHZC!=null and YHZC != ""'>
            AND yhxx.YHZC like concat(concat('%',#{YHZC}), '%')
        </if>
        <if test='YDDH!=null and YDDH != ""'>
            AND yhxx.YDDH like concat(concat('%',#{YDDH}), '%')
        </if>
        <if test='DLZH!=null and DLZH != ""'>
            AND yhxx.DLZH like concat(concat('%',#{DLZH}), '%')
        </if>
        <if test='JGBMXXBID!=null and JGBMXXBID != ""'>
            AND yhjg.JGBMXXBID=#{JGID}
        </if>)
        group by YHZHXXBID,YHXM,YHXB,YDDH,DLZH,ZHZT,CJSJ,cjrmc,sfsq,sfzh,glybs order by cjsj desc
    </select>

    <select id="selectDeleteUserWithOutStatus" resultType="com.zhicheng.javaplat.modular.user.entity.UserInfo">
        SELECT distinct
        YHXM,YHXB,YDDH,DLZH,ZHZT,CJSJ,cjrmc,YHZHXXBID,JGBMMC,jgbms,sfsq,sfzh,glybs
        FROM
        (select YHXM,YHXB,YDDH,DLZH,ZHZT,CJSJ,cjrmc,sfsq,sfzh,glybs,YHZHXXBID,listagg(JGBMMC,',') within group (order by JGBMMC) JGBMMC,listagg(jgbms,',') within group (order by jgbms) jgbms
        from
        (select distinct jgbm.JGBMXXBID jgbms,yhxx.YHZHXXBID,yhxx.CJSJ,yhxx.CJRYID,yhjg.ZXZT,jgbm.JGBMMC
        ,cjrxx.yhxm cjrmc,yhxx.YHXM ,yhxx.YHXB,yhxx.YDDH ,yhxx.DLZH,yhxx.YHZC,yhxx.zhzt,yhxx.sfsq,yhxx.sfzh,yhxx.glybs
        from qx_yhzhxxb yhxx
        left join qx_yhzh_jgbm yhjg on yhxx.yhzhxxbid = yhjg.yhzhxxbid
        left join qx_jgbmxxb jgbm on yhjg.jgbmxxbid = jgbm.jgbmxxbid
        left join QX_YHZHXXB cjrxx on yhxx.yhxm = cjrxx.yhxm
        where (yhjg.ZXZT=0 or yhjg.zxzt is null)
        <if test='YHXM!=null and YHXM != ""'>
            AND yhxx.YHXM like concat(concat('%',#{YHXM}), '%')
        </if>
        <if test='YHXB!=null and YHXB != ""'>
            AND yhxx.YHXB like concat(concat('%',#{YHXB}), '%')
        </if>
        <if test='YHZC!=null and YHZC != ""'>
            AND yhxx.YHZC like concat(concat('%',#{YHZC}), '%')
        </if>
        <if test='YDDH!=null and YDDH != ""'>
            AND yhxx.YDDH like concat(concat('%',#{YDDH}), '%')
        </if>
        <if test='DLZH!=null and DLZH != ""'>
            AND yhxx.DLZH like concat(concat('%',#{DLZH}), '%')
        </if>
        <if test='JGBMXXBID!=null and JGBMXXBID != ""'>
            AND yhjg.JGBMXXBID=#{JGID}
        </if>)
        group by YHZHXXBID,YHXM,YHXB,YDDH,DLZH,ZHZT,CJSJ,cjrmc,sfsq,sfzh,glybs order by cjsj desc) where ZHZT=0 order by cjsj desc
    </select>

    <select id="selectOneWithOrg" resultType="com.zhicheng.javaplat.modular.user.entity.UserInfo">
       SELECT
        <include refid="baseField" />
            ,jgxx.jgbmmc jgmc
            ,bmxx.jgbmmc bmmc
        FROM
            QX_YHZHXXB yhxx
            left join QX_JGBMXXB jgxx on yhxx.jgid = jgxx.jgbmxxbid
            left join QX_JGBMXXB bmxx on yhxx.bmid = bmxx.jgbmxxbid and bmxx.JGBMLX = 1
        where yhxx.zhzt=0
              and  yhxx.dlzh = #{userName}
    </select>

    <select id="selectUserWithOutList" resultType="com.zhicheng.javaplat.modular.user.entity.UserInfo">
        SELECT distinct
        <include refid="baseField" />
        ,cjrxx.yhxm cjrmc
        FROM
        QX_YHZHXXB yhxx
        left join QX_YHZHXXB cjrxx on yhxx.yhxm = cjrxx.yhxm
        where yhxx.zhzt=0
        order by yhxx.cjsj desc
    </select>

    <select id="selectJgmc" resultType="com.zhicheng.javaplat.modular.user.entity.UserInfo">
    select yhjg.JGBMXXBID,yhjg.YHZHXXBID,yhjg.CJSJ,yhjg.CJRYID,yhjg.ZXZT,yhjg.ZXSJ,yhjg.ZXRYID,jgxx.JGBMMC
    ,cjrxx.yhxm cjrmc,yhxx.YHXM ,yhxx.YHXB,yhxx.YDDH ,yhxx.DLZH
    from QX_YHZH_JGBM yhjg
    left join  QX_YHZHXXB yhxx on yhxx.YHZHXXBID = yhjg.YHZHXXBID
    left join QX_JGBMXXB jgxx on jgxx.JGBMXXBID = yhjg.JGBMXXBID
    left join QX_YHZHXXB cjrxx on yhxx.yhxm = cjrxx.yhxm
    where yhjg.ZXZT = 0 and yhjg.JGBMXXBID=#{JGID}
    </select>

    <select id="selectUserWithoutJg" resultType="com.zhicheng.javaplat.modular.user.entity.UserInfo">
    SELECT <include refid="baseField" />
            ,jgxx.jgbmmc jgbms
            ,bmxx.jgbmmc
            ,cjrxx.yhxm cjrmc
        FROM
            QX_YHZHXXB yhxx
            left join QX_YHZHXXB cjrxx on yhxx.yhxm = cjrxx.yhxm
            left join QX_JGBMXXB jgxx on yhxx.jgid = jgxx.jgbmxxbid
            left join QX_JGBMXXB bmxx on yhxx.bmid = bmxx.jgbmxxbid and bmxx.JGBMLX = 1
        where yhxx.zhzt=0
        <if test='YHXM!=null and YHXM != ""'>
            AND yhxx.YHXM like concat(concat('%',#{YHXM}), '%')
        </if>
        <if test='YHXB!=null and YHXB != ""'>
            AND yhxx.YHXB like concat(concat('%',#{YHXB}), '%')
        </if>
        <if test='YHZC!=null and YHZC != ""'>
            AND yhxx.YHZC like concat(concat('%',#{YHZC}), '%')
        </if>
        <if test='YDDH!=null and YDDH != ""'>
            AND yhxx.YDDH like concat(concat('%',#{YDDH}), '%')
        </if>
        <if test='DLZH!=null and DLZH != ""'>
            AND yhxx.DLZH like concat(concat('%',#{DLZH}), '%')
        </if>
    </select>
</mapper>

在Oracle查询中将结果列按分组用逗号隔开,拼接成一行使用(listagg函数)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!