首页 > 编程语言 > 详细

java8 mybatis-plus

时间:2020-03-21 16:18:26      阅读:56      评论:0      收藏:0      [点我收藏+]

待了解:

Lambda根据某字段将集合分组

stream流

---

mybatisplus

在使用mybatis-plus的过程中发现,这插件并不是官网吹的那样好用

 @Override
    public List<InterestShortInfoVo> getTenRecommendInterest() {
        return interestService.getTenRecommendInterestList().stream().map(item->InterestShortInfoVo.builder()
                .interestId(item.getId())
                .interestLogo(item.getHeadImg())
                .interestName(item.getTitle()).build()).collect(Collectors.toList());
    }

这算短的,涉及到复杂sql查询,就整个崩了

@Override
    public InterestContentItemVo publishInterestContentItem(InterestContentItemVo interestContentItemVo) {
        //插入动态
        InterestContentItemDo interestContentItemDo = InterestContentItemDo.builder()
                .content(interestContentItemVo.getContent())
                .contentType(interestContentItemVo.getContentType())
                .status(interestContentItemVo.getStatus())
                .interestId(interestContentItemVo.getInterestId())
                .xNumber(interestContentItemVo.getMemberBaseInfoVo().getXNumber()).build();
        Long contentItemId = interestContentItemService.insertContentItem(interestContentItemDo);
        interestContentItemVo.setId(contentItemId);
        //插入标签
        if(CollectionUtil.isNotEmpty(interestContentItemVo.getTagVoList())){
            List<TagDo> tagDoList = interestContentItemVo.getTagVoList().stream().map(item->TagDo.builder()
                    .tagLabel(item.getTagLabel())
                    .targetId(contentItemId).build()).collect(Collectors.toList());
            tagService.saveBatch(tagDoList);
        }
        // 插入资源
        if(CollectionUtil.isNotEmpty(interestContentItemVo.getResourceVoList())){
            List<ResourceDo> resourceDoList = interestContentItemVo.getResourceVoList().stream().map(item->
                    ResourceDo.builder()
                            .masterId(contentItemId)
                            .resourceType(item.getResourceType())
                            .resourceTitle(item.getResourceTitle())
                            .masterType(MasterType.INTEREST).build()).collect(Collectors.toList());
            resourceService.insertBatchResource(resourceDoList);
        }
        //获取用户信息
        MemberBaseInfoVo memberBaseInfoVo = memberService.getMemberInfo(interestContentItemVo.getMemberBaseInfoVo().getXNumber());
        interestContentItemVo.setMemberBaseInfoVo(memberBaseInfoVo);
        return interestContentItemVo;
    }

虽然功能是没错的也实现了 sql也可以 但是这简直反人类 

而且据技术朋友反应:这里面根本没法用Distinct啊!?

sql本来就是为了方便理解好不容易做到mybatis里

这下 mybatis plus 又给弄到java代码里了 虽然写着挺舒服挺爽快 但是遇到多表关联 group by多的就可能玩不转了

比如这个(表名不要吐槽)库存查询

<select id="listKucunWithRiZhi" resultMap="BaseResultMap">
        select
        DISTINCT rizhi2.mingchengguige as mingchengguige,
        ifnull(substring_index(group_concat((rizhi1.qichukucun1)order by rizhi2.createtime desc),,,1),
        (substring_index(group_concat((rizhi2.jieyushuliang)
        order by rizhi2.createtime desc),,,0))
        )as qichukucun,
        substring_index(group_concat(ifnull(rizhi1.shourushuliang1,0)order by rizhi2.createtime desc ),,,1) as
        shourushuliang,
        substring_index(group_concat(ifnull(rizhi1.fachushuliang1,0)order by rizhi2.createtime desc ),,,1) as
        fachushuliang,
        substring_index(group_concat(ifnull(rizhi1.tuihuishuliang1,0)order by rizhi2.createtime desc ),,,1) as
        tuihuishuliang,

        substring_index(group_concat(ifnull(rizhi1.posunshuliang1,0)order by rizhi2.createtime desc ),,,1) as
        posunshuliang,
        substring_index(group_concat(ifnull(rizhi1.weixiushuliang1,0)order by rizhi2.createtime desc ),,,1) as
        weixiushuliang,

        ifnull(substring_index(group_concat((rizhi1.jieyushuliang1)order by rizhi2.createtime desc),,,1),
        (substring_index(group_concat((rizhi2.jieyushuliang)
        order by rizhi2.createtime desc),,,0))
        ) as jieyushuliang,
        ifnull(substring_index(group_concat(rizhi1.createtime order by rizhi1.createtime desc),,,1),
        substring_index(group_concat(rizhi2.createtime order by rizhi2.createtime desc),,,1)
        )as createtime,
        ifnull(substring_index(group_concat(rizhi1.jiagongyigong order by rizhi1.createtime desc),,,1),
        substring_index(group_concat(rizhi2.jiagongyigong order by rizhi2.jiagongyigong desc),,,1)
        )as jiagongyigong,
        ifnull(substring_index(group_concat(rizhi1.danwei order by rizhi1.createtime desc),,,1),
        substring_index(group_concat(rizhi2.danwei order by rizhi2.danwei desc),,,1)
        )as danwei,
        ifnull(substring_index(group_concat(rizhi1.wuliaobianma order by rizhi1.createtime desc),,,1),
        substring_index(group_concat(rizhi2.wuliaobianma order by rizhi2.wuliaobianma desc),,,1)
        )as wuliaobianma,
        ifnull(substring_index(group_concat(rizhi1.id order by rizhi1.createtime desc),,,1),
        substring_index(group_concat(rizhi2.id order by rizhi2.id desc),,,1)
        )as id,
        ifnull(substring_index(group_concat(rizhi1.xiangmuweihu order by rizhi1.createtime desc),,,1),
        substring_index(group_concat(rizhi2.xiangmuweihu order by rizhi2.xiangmuweihu desc),,,1)
        )as xiangmuweihu,
        <if test="rukukufang != null and rukukufang != ‘‘ ">
            ifnull(substring_index(group_concat(rizhi1.rukukufang order by rizhi1.createtime desc),,,1),
            substring_index(group_concat(rizhi2.rukukufang order by rizhi2.rukukufang desc),,,1)
            )as rukukufang,
        </if>
        ifnull(substring_index(group_concat(rizhi1.dalei order by rizhi1.createtime desc),,,1),
        substring_index(group_concat(rizhi2.dalei order by rizhi2.dalei desc),,,1)
        )as dalei
        from (
        select
        DISTINCT (kucunrizhi.mingchengguige) as mingchengguige,
        substring_index(group_concat(kucunrizhi.id order by kucunrizhi.createtime desc),,,1) as id,
        substring_index(group_concat(kucunrizhi.xiangmuweihu order by kucunrizhi.createtime desc),,,1)as
        xiangmuweihu,
        substring_index(group_concat(kucunrizhi.rukukufang order by kucunrizhi.createtime desc),,,1)as rukukufang,
        substring_index(group_concat(kucunrizhi.dalei order by kucunrizhi.createtime desc),,,1)as dalei,
        substring_index(group_concat(kucunrizhi.qichukucun order by kucunrizhi.createtime),,,1)qichukucun1,
        sum(kucunrizhi.shourushuliang)as shourushuliang1,
        sum(kucunrizhi.fachushuliang)as fachushuliang1,
        sum(kucunrizhi.tuihuishuliang)as tuihuishuliang1,
        sum(kucunrizhi.posunshuliang)as posunshuliang1,
        sum(kucunrizhi.weixiushuliang)as weixiushuliang1,
        (substring_index(group_concat(
        kucunrizhi.qichukucun order by
        kucunrizhi.createtime),,,1)
        +sum(kucunrizhi.shourushuliang)
        -sum(kucunrizhi.fachushuliang)
        +sum(kucunrizhi.tuihuishuliang)
        -sum(kucunrizhi.posunshuliang)
        -sum(kucunrizhi.weixiushuliang)
        )as
        jieyushuliang1,

        substring_index(group_concat(kucunrizhi.jiagongyigong order by kucunrizhi.createtime desc),,,1)as
        jiagongyigong,
        substring_index(group_concat(kucunrizhi.danwei order by kucunrizhi.createtime desc),,,1)as danwei,
        substring_index(group_concat(kucunrizhi.wuliaobianma order by kucunrizhi.createtime desc),,,1)as wuliaobianma,
        substring_index(group_concat(kucunrizhi.createtime order by kucunrizhi.createtime desc),,,1)as createtime
        from wuliaokucunrizhi as kucunrizhi
        <where>
            <if test="mingchengguige != null and mingchengguige != ‘‘ ">
                <bind name="mingchengguigePattern" value="%+mingchengguige+%"/>
                and kucunrizhi.mingchengguige like #{mingchengguigePattern}
            </if>
            <if test="jiagongyigong != null and jiagongyigong != ‘‘ ">
                and kucunrizhi.jiagongyigong = #{jiagongyigong}
            </if>
            <if test="rukukufang != null and rukukufang != ‘‘ ">
                and kucunrizhi.rukukufang = #{rukukufang}
            </if>
            <if test="xiangmuweihu != null and xiangmuweihu != ‘‘">
                and kucunrizhi.xiangmuweihu = #{xiangmuweihu}
            </if>
            <if test="dalei != null and dalei != ‘‘ ">
                and kucunrizhi.dalei = #{dalei}
            </if>
            <if test="s_btime != null">
                and kucunrizhi.createtime &gt;= #{s_btime}
            </if>
            <if test="s_etime != null">
                and kucunrizhi.createtime &lt;= date_add(#{s_etime}, interval 1 day)
            </if>
            <if test="createtime != null">
                and kucunrizhi.createtime = #{createtime}
            </if>
            <if test="updatetime != null">
                and kucunrizhi.updatetime = #{updatetime}
            </if>
        </where>
        GROUP BY kucunrizhi.mingchengguige
        ORDER BY createtime DESC
        )rizhi1 right outer join wuliaokucunrizhi as rizhi2 on
        rizhi1.mingchengguige = rizhi2.mingchengguige
        <where>
            <if test="mingchengguige != null and mingchengguige != ‘‘ ">
                <bind name="mingchengguigePattern" value="%+mingchengguige+%"/>
                and rizhi2.mingchengguige like #{mingchengguigePattern}
            </if>
            <if test="jiagongyigong != null and jiagongyigong != ‘‘ ">
                and rizhi2.jiagongyigong = #{jiagongyigong}
            </if>
            <if test="rukukufang != null and rukukufang != ‘‘ ">
                and rizhi2.rukukufang = #{rukukufang}
            </if>
            <if test="xiangmuweihu != null and xiangmuweihu != ‘‘">
                and rizhi2.xiangmuweihu = #{xiangmuweihu}
            </if>
            <if test="dalei != null and dalei != ‘‘ ">
                and rizhi2.dalei = #{dalei}
            </if>
            <if test="createtime != null">
                and rizhi2.createtime = #{createtime}
            </if>
            <if test="updatetime != null">
                and rizhi2.updatetime = #{updatetime}
            </if>
        </where>
        group by rizhi2.mingchengguige
        <if test="show5Zero == null">
            having
            (qichukucun != 0)
            or (shourushuliang != 0)
            or (fachushuliang != 0)
            or (tuihuishuliang != 0)
            or (posunshuliang != 0)
            or (weixiushuliang != 0)
            or (jieyushuliang != 0)
        </if>
        <if test="sort != null and sort != ‘‘">
            order by ${sort} ${order}
        </if>
        <if test="sort == null">
            order by createtime desc
        </if>
    </select>

虽然这么长的sql可能是一开始没把数据库关联设计好等原因

但是难免还会有很复杂的sql

这情况再用mybatis plus去java代码实现,简直了

 

java8 mybatis-plus

原文:https://www.cnblogs.com/ukzq/p/12539351.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!