for循环
int queryCount(@Param("moduleName") String moduleName, @Param("statusList") List<Integer> statusList);
<select id="queryCount" resultType="java.lang.Integer">
select count(*) from system_alarm_ei where 1 = 1
<if test="moduleName!=null and moduleName!=''">
and `system` like concat('%',#{moduleName},'%')
</if>
<if test="statusList!=null and statusList.size()>0">
and `status` in (
<foreach collection="statusList" item="item" index="index" separator=",">
#{item}
</foreach>
)
</if>
</select>
多个字段或
public Page<MessageSendLog> queryLog(MessageSendLogQuery messageSendLogQuery) {
LambdaQueryWrapper<MessageSendLog> queryWrapper = new LambdaQueryWrapper<>();
Page<MessageSendLog> page = new Page<>(messageSendLogQuery.getPageNum(), messageSendLogQuery.getPageSize());
if (!StringUtils.isEmpty(messageSendLogQuery.getStartTime())) {
queryWrapper.ge(MessageSendLog::getSendTime, messageSendLogQuery.getStartTime());
}
if (!StringUtils.isEmpty(messageSendLogQuery.getEndTime())) {
queryWrapper.le(MessageSendLog::getSendTime, messageSendLogQuery.getEndTime());
}
String keyword = messageSendLogQuery.getKeyword();
if (!StringUtils.isEmpty(keyword)) {
queryWrapper.and(messageSendLogLambdaQueryWrapper -> messageSendLogLambdaQueryWrapper.or().like(MessageSendLog::getSendId, keyword)
.or().like(MessageSendLog::getSendAddress, keyword)
.or().like(MessageSendLog::getSendValue, keyword)
.or().like(MessageSendLog::getRemarks, keyword));
}
return this.page(page, queryWrapper);
}
xml中使用Map作为参数
分组查询count
先在service中生成好查询条件,然后使用Mapper的selectMaps函数即可
@Resource
SystemAlarmEiMapper systemAlarmEiMapper;
@Override
public void groupByModule() {
QueryWrapper<SystemAlarmEi> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("data_from", "信息中心");
queryWrapper.select("`system` as name, count(*) as value ");
queryWrapper.groupBy("`system`");
List<Map<String, Object>> mapList = systemAlarmEiMapper.selectMaps(queryWrapper);
System.out.println(JSON.toJSONString(mapList));
}
生成的SQL语句如下
SELECT `system` as name, count(*) as value
FROM system_alarm_ei
WHERE (data_from = '信息中心') GROUP BY `system`;