1. CONCAT函数的基础与进阶用法
MyBatis中的CONCAT函数就像数据库操作中的"胶水",能把零散的字符串片段粘合成我们需要的完整形态。我刚开始用MyBatis时,经常手动拼接Java字符串再传给SQL,直到发现这个宝藏函数才明白什么是真正的优雅。
基础用法就像搭积木,比如把用户表的姓和名拼成完整姓名:
<select id="getUserFullName" resultType="String">
SELECT CONCAT(last_name, first_name)
FROM users
WHERE user_id = #{userId}
</select>
但真正有意思的是它的动态拼接能力。去年做电商项目时,我们需要根据用户选择动态生成商品搜索条件。比如用户同时筛选品牌和价格区间时,SQL条件就要自动组合:
<select id="searchProducts" resultType="Product">
SELECT * FROM products
<where>
<if test="brand != null">
AND brand_name = CONCAT(#{brand}, '%')
</if>
<if test="minPrice != null">
AND price >= CONCAT(#{minPrice}, '.00')
</if>
</where>
</select>
这里有个实战技巧:当需要处理数字和字符串混合拼接时,用CONCAT比Java端转换更可靠。有次我们遇到浮点数精度问题,就是在数据库层用CONCAT统一格式化才解决的。
2. 动态SQL中的高阶字符串处理
在复杂业务场景下,单纯的字符串连接往往不够用。我们经常需要处理带条件的字符串组装,这时候CONCAT配合MyBatis的动态SQL标签会展现出惊人威力。
多条件模糊查询是最典型的案例。比如用户管理系统要支持姓名、工号、部门的多字段组合搜索:
<select id="findEmployees" resultType="Employee">
SELECT * FROM employee
<where>


1172

被折叠的 条评论
为什么被折叠?



