mybatis plus 自定义查询
时间: 2025-02-03 11:03:56 浏览: 45
### MyBatis Plus 自定义查询使用教程
#### 定义自定义查询条件
为了实现更灵活的数据访问,在 `MyBatis Plus` 中可以通过多种方式来自定义查询条件。对于简单的查询,通常可以利用内置的方法;然而当遇到复杂的需求时,则需采用更为高级的技术来构建动态SQL语句。
通过继承 `BaseMapper<T>` 并创建自己的 Mapper 接口,可以在其中声明特定于应用程序的查询方法[^1]。例如:
```java
public interface PersonMapper extends BaseMapper<Person> {
List<Person> selectPersonsByCustomCondition(@Param("name") String name, @Param("age") Integer age);
}
```
此接口中的 `selectPersonsByCustomCondition` 方法允许传入参数以满足不同的筛选需求。
#### 编写 XML 配置文件
如果希望进一步控制 SQL 的执行细节,还可以编写对应的 XML 文件来进行配置。这使得开发者能够完全掌控所生成的 SQL 语句形式及其行为模式。下面是一个针对上述例子编写的 XML 片段:
```xml
<mapper namespace="com.example.mapper.PersonMapper">
<select id="selectPersonsByCustomCondition" resultType="com.example.entity.Person">
SELECT * FROM t_person WHERE 1=1
<if test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
<if test="age != null">
AND age = #{age}
</if>
</select>
</mapper>
```
这段代码展示了如何根据输入参数动态调整查询范围,从而达到更加精准的结果匹配效果[^2]。
#### 利用 Wrapper 类简化查询过程
除了直接操作 SQL 外,`MyBatis Plus` 还提供了强大的封装工具——Wrapper 来帮助快速构造复杂的查询表达式。借助此类,无需手写繁琐的字符串拼接即可轻松达成目的。以下是使用 LambdaQueryWrapper 构建相同功能的例子:
```java
LambdaQueryWrapper<Person> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(name), Person::getName, name)
.eq(age != null, Person::getAge, age);
List<Person> persons = personService.list(queryWrapper);
```
这种方式不仅提高了开发效率,还增强了可读性和维护性。
阅读全文
相关推荐


















