mybatis-plus的${ew.sqlSegment},${ew.sqlSelect},${ew.customSqlSegment}

ew是mapper方法里的@Param(Constants.WRAPPER) Wrapper queryWrapper对象

简答介绍:

${ew.sqlSelect}:拼接select SQL主体

@Select("select ${ew.sqlSelect} from asdf")
List<adsf> getAfsd(@Param(Constants.WRAPPER)QueryWrapper queryWrapper)

${ew.sqlSet}:拼接update SQL主体

@Update("update ${tableName} set ${ew.sqlSet} ${ew.customSqlSegment};")
boolean updateById(@Param("tableName") String tableName,@Param(Constants.WRAPPER) Wrapper wrapper);

${ew.sqlSegment}:拼接where后的语句

@Select("select * from asdf where ${ew.customSqlSegment}")
List<sdf> getAfsdf(@Param(Constants.WRAPPER)QueryWrapper queryWrapper)

${ew.customSqlSegment}:拼接where后的语句(包括where。需注意在动态SQL中勿处于<where></where>标签内)

@Select("select * from asdf ${ew.customSqlSegment}")
List<sdfa> getsdfg(@Param(Constants.WRAPPER)QueryWrapper queryWrapper)

以${ew.sqlSegment}为例:

controller.java里面组装好查询条件

QueryWrapper<Crz> queryWrapper = new QueryWrapper();
        queryWrapper.eq("ispq", "-1");
        String shusinessType = req.getParameter("sipBunessType");
        String shpType = req.getParameter("shipType");
        // 获取当前日期
        LocalDate today = LocalDate.now();
        // 获取当天的00:00:00(00点)
        LocalDateTime startOfDay = today.atStartOfDay();
        // 获取当天的23:59:59
        LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        String formattedStart = startOfDay.format(formatter);
        String formattedEnd = endOfDay.format(formatter);

        queryWrapper.between("csj", formattedStart, formattedEnd);

        String gkmc = req.getParameter("cwYmc");
        if (StaticMethod.isNotEmpty(gkmc)) {
            gkmc = jcgCySnapService.getJcgYgmc(gkmc);
            queryWrapper.like("gkid", gkmc);
        }

        String yc = req.getParameter("ycmc");
        if (StaticMethod.isNotEmpty(ycmc)) {
            queryWrapper.like("ycmc", ycmc);
        }
        List<Cgrz> cgrzs = jgbgMapper.cgcywpqPage(queryWrapper);

mapper.java里面

    IPage<Jz> jgrzList(Page<Jz> page, @Param("ew") Wrapper<Jz> queryWrapper, 
@Param("yhpz") String yhpz,@Param("districtLikeStr") String districtLikeStr);

mapper.xml里面

<select id="jzList" resultType="org.jeecg.modules.ygl.entity.rz">
        SELECT cy.xm as czxm,jcg_jgbg.ship_info_id as shipInfoId,jcg_jgbg.id as jcgId,dis.districtName,ycmc,jgsj,gk.gkmc,gk.gkmc sagkmc,sfczhybrdwdjb,insert_time,insert_user,yhpz,jgbgid,yhwzl
        FROM jcg_jgbg
        left join (select yhpz,jgbgid,sum(yhl) yhwzl from jcg_yh
         			<if test="yhpz != null">
         			 where yhpz = #{yhpz}
         			</if>
         			group by jgbgid
         			) zl on jcg_jgbg.id=zl.jgbgid
        left join jcg_gk gk on jcg_jgbg.njgkid = gk.id
        left join sys_district dis on dis.districtId = jcg_jgbg.ship_district
        left join jcg_cy cy on cy.id = jcg_jgbg.czid
        where ship_district like '${districtLikeStr}%'
        <if test="ew.sqlSegment != null">
            and  ${ew.sqlSegment}
        </if>
        ORDER by jgsj desc
    </select>

SQL执行结果:

以上内容仅供学习参考! 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐