mybatis like查询实例
时间: 2023-07-13 09:33:07 浏览: 78
在 MyBatis 中,我们可以使用 `LIKE` 运算符来实现模糊查询。下面是一个示例:
```xml
<select id="selectByKeyword" parameterType="java.lang.String" resultType="com.example.User">
SELECT * FROM user WHERE name LIKE CONCAT('%', #{keyword}, '%')
</select>
```
这个示例中,我们使用了 `CONCAT` 函数将 `%` 和关键字 `#{keyword}` 拼接起来,然后使用 `LIKE` 运算符进行模糊查询。
在 Java 代码中,我们可以这样调用这个查询语句:
```java
String keyword = "%John%";
List<User> users = sqlSession.selectList("selectByKeyword", keyword);
```
这个示例中,我们将 `%John%` 作为关键字传递给查询语句,MyBatis 会将其拼接成 `'%John%'`,然后执行模糊查询,返回符合条件的用户列表。
相关问题
mybatis like 查询xx开头的
在使用MyBatis进行模糊查询时,可以使用SQL的LIKE关键字来实现以特定字符开头的查询。下面是一个示例:
我们可以使用MyBatis的动态SQL来实现这个查询操作。首先,在mapper.xml文件中定义一个select语句,使用LIKE关键字进行模糊查询。例如:
```xml
<select id="selectByPrefix" resultMap="resultMap">
SELECT *
FROM table_name
WHERE column_name LIKE #{prefix}%
</select>
```
在这个例子中,`table_name`是你要查询的表名,`column_name`是要进行模糊查询的列名。`#{prefix}`是一个参数,表示你要查询的开头字符。
然后,在对应的Java接口中,定义一个与select语句对应的方法。例如:
```java
public interface UserDao {
List<User> selectByPrefix(String prefix);
}
```
这样你就可以在代码中调用这个方法来进行模糊查询了。例如:
```java
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.selectByPrefix("xx");
```
这个方法会返回以"xx"开头的所有匹配结果。
总结来说,通过使用MyBatis的模糊查询功能和LIKE关键字,我们可以很方便地实现以特定字符开头的查询操作。你只需要在mapper.xml文件中定义查询语句,然后在对应的Java接口中定义方法,并传入相应的参数即可。
mybatis 传递参数 like查询
MyBatis 中的 `LIKE` 查询通常用于在数据库表中查找包含指定模式的数据。当你需要动态生成 SQL 语句并且希望匹配字符串中的部分模式时,可以使用 `%` 或 `_` 符号:
1. `%` 表示任意字符序列(包括零字符),常用于模糊搜索,如 `SELECT * FROM table WHERE column LIKE '%pattern%'` 可以查找所有列名中包含 "pattern" 的记录。
2. `_` 表示单个字符,用于精确匹配一个位置上的字符,例如 `SELECT * FROM table WHERE column LIKE 'abc_'` 只会匹配以 "abc" 开始的记录,第四位是任意字符。
在 MyBatis 中,你可以使用参数化查询来安全地插入占位符(通常是 `#{}` 或 `${}`),然后将实际的值通过 `PreparedStatement` 设置进去。下面是一个例子:
```xml
<select id="selectByPattern" parameterType="map" resultType="YourEntity">
SELECT * FROM your_table
WHERE column LIKE #{pattern}
</select>
// 调用时传入参数
Map<String, Object> params = new HashMap<>();
params.put("pattern", "%searchTerm%");
List<YourEntity> results = sqlSession.selectList("selectByPattern", params);
```
在这个例子中,`#{pattern}` 将会被 `Pattern` 对象替换,这样可以避免SQL注入攻击,并且可以根据不同的 `searchTerm` 参数生成不同的 SQL 语句。
阅读全文