mybatis like 查询
时间: 2023-11-25 15:52:19 浏览: 119
以下是使用Mybatis进行like查询的示例代码:
1. 在Mapper.xml文件中使用like查询:
```xml
<select id="getUserByName" parameterType="String" resultType="User">
SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
```
2. 在Mapper接口中定义方法:
```java
public interface UserMapper {
List<User> getUserByName(String name);
}
```
3. 在Java代码中调用Mapper接口方法:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.getUserByName("张三");
} finally {
sqlSession.close();
}
```
相关问题
mybatis like查询
### MyBatis 中 LIKE 查询的使用方法
在 MyBatis 中,`LIKE` 查询通常用于模糊匹配字符串数据。可以通过 SQL 语句中的 `WHERE column_name LIKE '%value%'` 来实现这一功能。以下是具体的实现方式和示例。
#### 方法一:使用 `#{}`
当需要进行模糊查询时,可以在 Java 层面拼接 `%` 符号,并通过 `#{}` 占位符传递参数[^3]。这种方式能够有效防止 SQL 注入攻击。
```java
// Mapper 接口定义
public interface UserMapper {
@Select("SELECT * FROM users WHERE name LIKE CONCAT('%', #{name}, '%')")
List<User> findByNameLike(String name);
}
```
调用此方法时,只需传入待查找的关键字即可:
```java
String keyword = "John";
List<User> result = userMapper.findByNameLike(keyword);
```
---
#### 方法二:使用 `${}`
如果希望直接在 SQL 中嵌入变量而不经过预编译,则可以使用 `${}` 占位符。需要注意的是,这种方法存在潜在的安全风险(如 SQL 注入),因此应谨慎使用。
```sql
<!-- XML 配置 -->
<select id="findByNameLike" parameterType="string" resultType="User">
SELECT * FROM users WHERE name LIKE '%${name}%'
</select>
```
对应的 Java 调用如下:
```java
Map<String, Object> params = new HashMap<>();
params.put("name", "John");
List<User> result = sqlSession.selectList("findByNameLike", params);
```
---
#### 方法三:组合条件构造器(适用于 MyBatis-Plus)
对于更复杂的场景,尤其是涉及多字段联合查询的情况下,推荐使用 MyBatis-Plus 提供的功能[^4]。例如,构建一个基于 `QueryWrapper` 的条件表达式来完成模糊查询。
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "John"); // 构造 LIKE '%%' 条件
List<User> resultList = userMapper.selectList(queryWrapper);
```
上述代码会生成类似于以下的 SQL 语句:
```sql
SELECT * FROM users WHERE name LIKE '%John%';
```
---
#### 注意事项
1. **安全性**:优先选用 `#{}` 方式以避免 SQL 注入问题。
2. **性能优化**:针对大数据表,建议为经常使用的模糊查询字段创建索引,但需注意前缀通配符 (`%keyword`) 可能无法利用索引。
3. **大小写敏感性**:默认情况下,MySQL 对于 Latin 字符集是区分大小写的;而对于 UTF-8 则可能不区分。可通过调整数据库配置或显式指定 COLLATE 解决该问题。
---
### 总结
以上介绍了三种常见的 MyBatis 实现 `LIKE` 查询的方式,分别是通过 `#{}` 安全绑定参数、`${}` 动态替换模板以及借助 MyBatis-Plus 的高级特性简化开发流程。开发者可以根据实际需求选择合适的方法。
mybatislike查询语句
MyBatis-Like 查询语句可以用来进行模糊查询,查询符合某个模式的记录。在 MyBatis 中,Like 查询语句可以通过在 SQL 语句中使用通配符来实现,其中通配符 % 表示零个或多个字符,而 _ 表示一个任意字符。以下是 Like 查询语句的语法:
```
SELECT * FROM table_name WHERE column_name LIKE pattern;
```
其中,pattern 是查询模式,它可以包含通配符 % 和 _。例如,要查询所有名字以 "Tom" 开头的用户,可以使用以下 SQL 语句:
```
SELECT * FROM user WHERE name LIKE 'Tom%';
```
此外,还可以使用多个通配符来组成复杂的查询模式。例如,要查询所有名字以 "T" 开头并且长度为 5 的用户,可以使用以下 SQL 语句:
```
SELECT * FROM user WHERE name LIKE 'T____';
```
在 MyBatis 中,Like 查询语句可以通过在 Mapper XML 文件中编写相应的 SQL 语句来实现。例如:
```
<select id="findUsersByName" resultType="User">
SELECT * FROM user WHERE name LIKE #{name}
</select>
```
其中,#{name} 是参数占位符,具体的查询模式由传入的参数值决定。在 Java 代码中调用该查询语句时,可以通过传入不同的参数值来实现不同的查询需求。
阅读全文
相关推荐












