home_shipper_status存0,1,2
今天看到同事这么设置参数的
if (UserAuthEnum.AUTH_STATUS_VALIDATED.getCode().equals(popQuery.getAuthStatus())) {
query.setHomeShipperStatus("0,2");
} else {
query.setHomeShipperStatus("0,1");
}
mybatis 局部
select *
from common_notice
where 1 = 1 and release_home = '1'
<if test="homeShipperStatus != null and homeShipperStatus != ''">
and FIND_IN_SET(home_shipper_status, #{homeShipperStatus})
</if>
sql实际是:
SELECT home_shipper_status
FROM aflc_common_notice
WHERE 1 = 1 AND release_home = ‘1’
AND FIND_IN_SET(home_shipper_status, ‘0,1’)
结果
如果把sql改用in 代码在拼接参数就复杂点,MyBatis用foreach语句解决
SELECT home_shipper_status
FROM aflc_common_notice
WHERE 1 = 1 AND release_home = ‘1’
AND home_shipper_status IN(‘0’,‘1’);
变量放在前面:字段要加esc键下的点
SELECT home_shipper_status
FROM aflc_common_notice
WHERE 1 = 1 AND release_home = '1'
AND FIND_IN_SET('0', `home_shipper_status`);
结果:
这样就不行的,会没结果:
AND FIND_IN_SET(‘0,1’, home_shipper_status
);
这个语句:
SELECT FIND_IN_SET(‘b’,‘a,b,c,d’);
结果:
相信你看了就知道FIND_IN_SET怎么用了