mybatis中使用list作为参数方式
更新时间:2026年01月07日 09:27:08 作者:HRX98
在使用MyBatis时,若要在Mapper XML中使用List作为参数,并且collection属性值类型为List,需要注意传入的参数为List时不能使用lists!=null进行判断
mybatis中使用list作为参数
collection属性值类型为List
dao
@Override
public Integer timeAnalyse(String customerId, LocalDateTime firstDay, LocalDateTime lastDay, String metric ,Integer type) {
List<String> list = this.getMetrics(metric);
return baseMapper.countByTime(customerId, firstDay, lastDay, list, type);
}
/**
* 获取指标列表
* @param metric 指标大类名称
* @return 指标列表
*/
private List<String> getMetrics(String metric) {
List<String> list = new ArrayList<>();
if (metric.equals(HealthRecordConstant.METRIC_TYPE_WEIGHT)) {
list.add(HealthRecordConstant.METRIC_TYPE_WEIGHT);
list.add(HealthRecordConstant.METRIC_TYPE_BMI);
} else if (metric.equals(HealthRecordConstant.METRIC_TYPE_BLOODPRESSURE)) {
list.add(HealthRecordConstant.METRIC_TYPE_DIASTOLICPRESSURE);
list.add(HealthRecordConstant.METRIC_TYPE_HEARTPATEOFBP);
list.add(HealthRecordConstant.METRIC_TYPE_SYSTOLICPRESSURE);
} else {
list.add(HealthRecordConstant.METRIC_TYPE_BGAFTERBREAKFAST);
list.add(HealthRecordConstant.METRIC_TYPE_BGAFTERDINNER);
list.add(HealthRecordConstant.METRIC_TYPE_BGAFTERLUNCH);
list.add(HealthRecordConstant.METRIC_TYPE_BGBEFOREBEDTIME);
list.add(HealthRecordConstant.METRIC_TYPE_BGBEFOREDAWN);
list.add(HealthRecordConstant.METRIC_TYPE_BGBEFOREDINNER);
list.add(HealthRecordConstant.METRIC_TYPE_BGBEFORELUNCH);
list.add(HealthRecordConstant.METRIC_TYPE_FASTINGBLOODGLUCOSE);
}
return list;
}
mapper
Integer countByTime(@Param("customerId") String customerId,
@Param("firstDay") LocalDateTime firstDay,
@Param("lastDay") LocalDateTime lastDay,
@Param("metrics") List<String> metrics,
@Param("type") Integer type);
xml
<select id="countByTime" resultType="Integer">
SELECT
COUNT(*)
from
customer_body_metrics
WHERE
<if test="type == 0">
HOUR(create_time) BETWEEN 0 and 8
</if>
<if test="type == 1">
HOUR(create_time) BETWEEN 8 and 16
</if>
<if test="type == 2">
HOUR(create_time) BETWEEN 16 and 24
</if>
and
customer_id = #{customerId}
and
create_time > #{firstDay}
and
#{lastDay} > create_time
<if test="metrics.size()>0">
and
metric IN
<foreach collection="metrics" item="value" index="index" open="(" close=")" separator=",">
#{value}
</foreach>
</if>
</select>
注意
传入参数为List不能用lists != ‘’ 判断

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
jackson 实现null转0 以及0转null的示例代码
这篇文章主要介绍了jackson 实现null转0 以及0转null的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-09-09
SpringBoot使用iText7实现将HTML转成PDF并添加页眉页脚水印
这篇文章主要为大家详细介绍了SpringBoot使用iText7实现将HTML转成PDF并添加页眉页脚水印的相关知识,感兴趣的小伙伴可以跟随小编一起学习一下2024-03-03
SpringBoot+WebSocket+Netty实现消息推送的示例代码
这篇文章主要介绍了SpringBoot+WebSocket+Netty实现消息推送的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-04-04
JAVA(SpringBoot)集成Jasypt进行加密、解密功能
Jasypt是一个Java库,专门用于简化加密和解密操作,提供多种加密算法支持,集成到SpringBoot等框架中,通过使用Jasypt,可以有效保护配置文件中的敏感信息,如数据库密码等,避免被未授权访问,Jasypt还支持自定义加密器,提高扩展性和安全性,适用于各种需要加密保护应用场景2024-09-09
Java通过在主循环中判断Boolean来停止线程的方法示例
这篇文章主要介绍了Java通过在主循环中判断Boolean来停止线程的方法,结合具体实例形式分析了java针对线程的判断与停止操作相关实现技巧,需要的朋友可以参考下2017-04-04


最新评论