Mybatisplus 分表查询记录

 

private List<String> getTableName(String tradeTimeBegin,String tradeTimeEnd){
        List<String> tableName = new ArrayList<>();
        if(StringUtils.isBlank(tradeTimeBegin)){
            tradeTimeBegin="2020-01-01";
        }
        if(StringUtils.isBlank(tradeTimeEnd)){
            tradeTimeEnd=TimeUtils.getDateStr(new Date());
        }
        List<String> postfixes= TimeUtils.getMonthBetween(tradeTimeBegin,tradeTimeEnd);
        postfixes.forEach(e->{
            StringBuilder str=new StringBuilder("merchant_transaction_").append(e);
            tableName.add(str.toString());
        });
        return this.baseMapper.getTableNameList(tableName);
    }

 

/**
     * 获取当前数据库表名
     *
     * @param tableNameList 表名列表
     * @return
     */
    List<String> getTableNameList(@Param("tableNameList") List<String> tableNameList);
<select id="getTableNameList" resultType="java.lang.String">
        select table_name from information_schema.tables
        <where>
            <if test="tableNameList !=null and tableNameList.size() > 0">
                and table_name in
                <foreach collection="tableNameList" item="item" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
        </where>
    </select>
    IPage<MerchantTransaction> queryWebPage(Page<MerchantTransWebPageRes> page, @Param("req") MerchantTransWebPageReq req, @Param(Constants.WRAPPER) LambdaQueryWrapper<MerchantTransWebPageReq> wrapper, @Param("tableName")List<String> tableName);
<select id="queryWebPage" resultType="com.eg.cdt.saas.pay.dao.entity.MerchantTransaction">
        select * from (
        <foreach collection="tableName" item="item" separator="union all">
            SELECT uuid,trade_amount,order_id,trade_time,trade_type,trade_status
            FROM ${item}
            where delete_flag=1
            <if test="req.tradeTimeBegin !=null">
                <![CDATA[and to_char(trade_time, 'yyyy-MM-dd') >=  #{req.tradeTimeBegin}]]>
            </if>
            <if test="req.tradeTimeEnd !=null">
                <![CDATA[and to_char(trade_time, 'yyyy-MM-dd') <=  #{req.tradeTimeEnd}]]>
            </if>
        </foreach>
        ) alt ${ew.customSqlSegment}
        ORDER BY trade_time desc
</select>
@Override
    public IPage<MerchantTransaction> webPage(Integer pageNo, Integer pageSize, MerchantTransWebPageReq req) {
        List<String> lists=getTableName(req.getTradeTimeBegin(),req.getTradeTimeEnd());
        if(lists.size()>0){
            Page<MerchantTransWebPageRes> page = new Page<>(pageNo, pageSize);
            return this.baseMapper.queryWebPage(page, req,new LambdaQueryWrapper<MerchantTransWebPageReq>(), lists);
        }
        return new Page<>();
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值