mybatis根据list中的值进行模糊查询
时间: 2023-08-07 20:02:32 浏览: 140
要根据 List 集合中的值进行模糊查询,可以在 SQL 语句中使用 LIKE 关键字,并使用 foreach 标签引用 List 集合中的参数,例如:
```
<select id="selectByList" parameterType="java.util.List" resultType="...">
SELECT * FROM table_name WHERE column_name LIKE
<foreach item="item" index="index" collection="list" open="(" separator=" OR " close=")">
CONCAT('%', #{item}, '%')
</foreach>
</select>
```
这里的 CONCAT 函数用于拼接 % 通配符,使查询结果包含 List 集合中的每一个参数。
然后,在 Java 代码中传入一个 List 参数并调用该 SQL 语句,例如:
```
List<String> list = new ArrayList<>();
list.add("value1");
list.add("value2");
List<...> result = sqlSession.selectList("mapper.selectByList", list);
```
这样就可以根据 List 集合中的值进行模糊查询了。
相关问题
在mybatis-plus中如何实现模糊查询
在mybatis-plus中实现模糊查询的方法如下:
1. 使用QueryWrapper对象进行模糊查询
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "张三");
List<User> userList = userMapper.selectList(wrapper);
```
这里的"like"方法表示模糊查询,第一个参数表示要查询的字段名,第二个参数表示要查询的值。
2. 使用LambdaQueryWrapper对象进行模糊查询
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.like(User::getName, "张三");
List<User> userList = userMapper.selectList(wrapper);
```
这里使用Lambda表达式来指定要查询的字段,查询方式与QueryWrapper相同。
总结:在mybatis-plus中实现模糊查询可以使用QueryWrapper或LambdaQueryWrapper对象,使用like方法进行模糊查询,第一个参数是要查询的字段名,第二个参数是要查询的值。
mybatis达梦数据库拼接字符串模糊查询
在 MyBatis 中,可以使用 CONCAT 函数来实现拼接字符串模糊查询。具体实现步骤如下:
1.在 Mapper.xml 文件中编写 SQL 语句,使用 CONCAT 函数来拼接查询条件,例如:
```
<select id="getUserByName" resultType="User">
SELECT * FROM user WHERE name LIKE CONCAT('%',#{name},'%')
</select>
```
上述 SQL 语句中,使用 CONCAT 函数将 `%`、`#{name}` 和 `%` 三部分拼接起来,从而实现字符串模糊查询。
2.在对应的 Mapper 接口中定义方法和参数,例如:
```
public interface UserMapper {
List<User> getUserByName(String name);
}
```
在参数中传入需要查询的名字,MyBatis 会将其替换到 SQL 语句中的 `#{name}` 占位符中,从而实现拼接字符串模糊查询。
需要注意的是,使用 CONCAT 函数也会存在 SQL 注入的风险,因此需要对传入的参数值进行过滤或预编译,避免 SQL 注入风险。
阅读全文