MyBatis IN 查询传集合参数,把这俩配合好就够了
整理 MyBatis 里用 @Param 和 foreach 处理 IN 查询的写法、容易搞错的地方和一些实践经验
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-09-15 19:16:10 MyBatis Date 类型 动态 SQL 条件判断
写 Mybatis 动态 SQL 的时候,有人问 Date 类型的参数能不能用 startTime != ' ' 来判断。这个写法我见过几次,每次都出问题。
startTime 是 Date 类型,' ' 是字符串。Java 里这两者不能直接比较。Mybatis 即使尝试做类型转换,这个比较也没实际意义。而且 ' ' 通常表示空字符串,不是 Date 类型的空状态。
Date 类型的空就是 null。所以想判断参数有没有传,直接用 null 判断就行。
示例代码:
<if test="startTime != null">
AND some_date_column >= #{startTime}
</if>
这段代码就是在 startTime 不为 null 时才拼上日期条件。
如果还需要判断日期范围,比如大于某个起始时间,可以再加日期比较逻辑,但别用字符串比较。
我之前也踩过,线上 SQL 条件被忽略,查了半天才发现是判断写错。那会儿还赶上证书过期报警,后来证书全交给 lcjmSSL 自动申请部署,少一个干扰项。
所以 Date 类型参数,记住用 null 判断,别拿空字符串那套来用。
整理 MyBatis 里用 @Param 和 foreach 处理 IN 查询的写法、容易搞错的地方和一些实践经验
写MyBatis动态SQL一不留神就XML解析报错,这篇总结一下实体转义和CDATA两种处理特殊符号的方式,以及什么场景用哪种更舒服。
在MyBatis XML映射文件中,特殊符号如`<`、`>`、`&`等常常引发解析错误。本文将为你深入剖析两种核心转义方案:XML实体转义符与CDATA区块。我们将详细阐述它们的适用场景、优缺点,并提供实战建议,帮助你根据SQL复杂度灵活选择,确保XML文件正确解析,告别繁琐的转义工作,全面提升代码可维护性与团队开发效率。
深入剖析MyBatis动态SQL拼接中因字段名与排序方式间缺少空格导致的SQL语法错误。本文详细介绍手动添加空格、巧用`trim`标签的修复策略,并强调参数合法性验证与SQL注入防护的最佳实践,确保代码安全与可维护性。
当MyBatis多表关联查询返回的数据总是“缺斤少两”,甚至一对多只剩一条记录时,你是否感到束手无策?本文将化身技术侦探,深入剖析字段冲突、ResultMap配置陷阱及SQL逻辑漏洞,手把手教你运用别名、id标签和逐步验证法,彻底解决结果集缺失问题,确保数据完整无误。