mybatis无法把concat拼接的字符串给对象
时间: 2025-06-29 14:22:54 浏览: 0
### MyBatis 中使用 `CONCAT` 函数拼接字符串并赋值给对象
在处理 SQL 查询时,特别是在涉及模糊查询的情况下,正确地构建 SQL 语句对于防止 SQL 注入至关重要。当使用 MyBatis 和 `LIKE` 子句进行模糊匹配时,推荐的方式是通过 `#{}` 占位符传递参数,并利用 MySQL 的内置函数如 `CONCAT()` 来安全地执行操作。
#### 使用 `CONCAT` 安全地实现模糊查找
为了确保安全性并且能够正常工作,在 MyBatis 映射文件中可以这样定义:
```xml
<select id="findSchoolByName" parameterType="string" resultType="com.example.School">
SELECT *
FROM tbl_school
WHERE school_name LIKE CONCAT('%', #{name}, '%')
</select>
```
这种方式不仅避免了潜在的安全风险,还使得代码更加简洁易读[^1]。
#### 将结果映射到 Java 对象
MyBatis 提供了一种优雅的方法来将查询的结果直接映射至指定的对象实例。假设有一个名为 `School` 的实体类,则上述查询返回的数据会被自动填充到该类型的列表里。这得益于 MyBatis 自动化的 ORM 功能,减少了大量样板式的 JDBC 编码需求[^2]。
如果遇到某些情况下希望自定义字段名与属性之间的对应关系,可以在 resultMap 中显式声明这种关联:
```xml
<resultMap id="schoolResultMap" type="com.example.School">
<id property="id" column="id"/>
<result property="name" column="school_name"/>
<!-- 更多字段 -->
</resultMap>
<select id="findSchoolByName" parameterType="string" resultMap="schoolResultMap">
SELECT *
FROM tbl_school
WHERE school_name LIKE CONCAT('%', #{name}, '%')
</select>
```
这样做可以让开发者更灵活地控制数据转换过程,同时也提高了程序的可维护性和扩展性[^3]。
阅读全文
相关推荐


















