背景:

在做数据筛选的时候,我们往往需要数据的过滤,如空为空的时候应该是要加载全部数据,举例说明:

参数 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 >

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐