String 类型在 MyBatisPlus Mapper中自定义Sql时判断某一个字段是否为空
背景:在做数据筛选的时候,我们往往需要数据的过滤,如空为空的时候应该是要加载全部数据,举例说明:参数parameterType:返回的类型resultType:返回结果<select id="getPsmMangerSite" parameterType="string" resultType="com.pig4cloud.pigx.smc.entity.Ps...
·
背景:
在做数据筛选的时候,我们往往需要数据的过滤,如空为空的时候应该是要加载全部数据,举例说明:
参数 parameterType:返回的类型 resultType:返回结果
<select id="getPsmMangerSite" parameterType="string" resultType="com.pig4cloud.pigx.smc.entity.PsmgManager2site">
SELECT
p.name,
site.`name` as siteName,
t1.event_day,
t1.cnt,
t1.site_id
FROM
(
SELECT
t.person_id,
count( 1 ) cnt,
t.event_day,
t.site_id
FROM
smc_psmg_manager2site t
GROUP BY
t.person_id,
t.event_day,t.site_id
) t1,
smc_psmg_grpmem g,
sc_base_person p,
sc_base_site site
WHERE
t1.person_id = p.id
AND p.site_id = site.site_id
AND p.id = g.person_id
<if test="psmgManager2siteDto.eventDay!=null and psmgManager2siteDto.eventDay!=''"> //String 类型判断空
AND t1.event_day LIKE CONCAT('%',#{psmgManager2siteDto.eventDay},"%") //concat:模糊查询 %号连接, 如%A%
</if>
<if test="psmgManager2siteDto.siteName!=null and psmgManager2siteDto.siteName!=''">
AND site.name LIKE #{psmgManager2siteDto.siteName}
</if>
<if test="psmgManager2siteDto.name!=null and psmgManager2siteDto.name!=''">
AND p.name LIKE #{psmgManager2siteDto.name}
</if>
</select>
解答:
<if test="psmgManager2siteDto.eventDay!=null and psmgManager2siteDto.eventDay!=''">
t1.event_day LIKE CONCAT('%',#{psmgManager2siteDto.eventDay},"%") </if>
对eventday(String类型)进行判空处理,“and”表示“与”。关键字 CONCAT(“%”,A,“%”)常用于模糊查询,等价于‘%A%’
如果是日期类型 ,则只能 <if test="psmgManager2siteDto.eventDay!=null >
更多推荐
已为社区贡献1条内容
所有评论(0)