mybatis like 写法
时间: 2023-11-09 11:03:22 浏览: 137
Mybatis中的like写法可以使用通配符%或_,其中%表示匹配0个或多个任意字符,_表示匹配一个任意字符。示例代码如下:
```
<select id="getUserByName" resultType="User">
select * from user where name like concat('%', #{name}, '%')
</select>
```
以上代码中,#{name}是传入的参数,concat函数用于拼接字符串。
相关问题
mybatis like写法
MyBatis提供了两种方式来进行模糊查询的like写法,分别是使用通配符和使用动态SQL。
1. 使用通配符:
在使用通配符的方式时,可以在查询语句中使用 "%" 字符来表示任意字符的匹配。
示例代码如下:
```java
@Select("SELECT * FROM your_table WHERE your_column LIKE CONCAT('%', #{keyword}, '%')")
List<YourEntity> findByKeyword(@Param("keyword") String keyword);
```
上述示例中,`your_table`是数据库表名,`your_column`是要查询的字段名,`your_entity`是实体类名。通过`#{keyword}`占位符将参数传入,并使用CONCAT函数将 "%" 字符拼接到关键字的前后,实现模糊查询。
2. 使用动态SQL:
使用动态SQL的方式可以根据不同的情况动态生成SQL语句。可以根据输入的关键字是否为空来决定是否添加模糊查询条件。
示例代码如下:
```xml
<select id="findByKeyword" parameterType="String" resultType="YourEntity">
SELECT * FROM your_table
<where>
<if test="keyword != null and keyword != ''">
AND your_column LIKE CONCAT('%', #{keyword}, '%')
</if>
</where>
</select>
```
上述示例中,`your_table`是数据库表名,`your_column`是要查询的字段名,`your_entity`是实体类名。通过`<if>`标签判断关键字是否为空,如果不为空则添加模糊查询条件。
以上就是使用MyBatis进行模糊查询的两种常见写法。根据具体的需求和项目情况,可以选择适合的方式来实现模糊查询。
mybatis like最优写法
### MyBatis 中使用 LIKE 关键字的最佳实践
#### 使用 `CONCAT` 函数处理模糊查询
为了防止 SQL 注入并提高可读性和维护性,在 MySQL 和 Oracle 数据库中可以采用不同的方式来实现模糊匹配。对于 MySQL,推荐的方式是在 XML 映射文件里利用 `<select>` 标签配合 `concat()` 方法构建条件表达式[^1]。
```xml
<select id="findUserByLikeName3" parameterType="java.lang.String" resultMap="user">
select * from t_user where name like concat('%',#{name,jdbcType=VARCHAR},'%')
</select>
```
这种方法不仅能够有效避免潜在的安全风险,而且使得参数传递更加直观简洁。
#### 结合 Java 代码预处理通配符
另一种常见的做法是提前在应用程序层面上准备好带有百分号 `%` 的字符串模式再传给持久化框架执行查询操作。这种方式适用于多种类型的数据库系统,并且保持了一定程度上的灵活性[^3]。
```java
String wildcardName = "%" + originalName + "%";
list<Name> names = mapper.selectLike(wildcardName);
```
对应的 Mapper 文件定义如下:
```xml
<select id="selectlike">
select * from foo where bar like #{value}
</select>
```
需要注意的是,当业务逻辑允许的情况下应尽可能减少动态拼接 SQL 片段的行为,因为这可能会带来性能开销以及安全隐患等问题。
#### 定义 Result Map 提升映射效率
无论采取哪种形式的模糊查询方案,都建议为实体类创建专门的结果集映射规则(Result Map),从而确保字段之间的对应关系清晰明了,同时也便于后续扩展和调试工作[^2]。
```xml
<resultMap type="demo.entity.AppList" id="resultMap">
<result column="appid" property="appid" jdbcType="VARCHAR"/>
<result column="schoolid" property="schoolid" jdbcType="VARCHAR"/>
<result column="appname" property="appname" jdbcType="VARCHAR"/>
<result column="app_departid" property="app_departid" jdbcType="VARCHAR"/>
<result column="apptype" property="apptype" jdbcType="VARCHAR"/>
</resultMap>
```
通过上述措施可以在很大程度上提升基于 MyBatis 实现模糊查询功能的质量与可靠性。
阅读全文
相关推荐













