您当前的位置:首页 > 互联网教程

MyBatis-Plus QueryWrapper 模糊查询

发布时间:2025-05-23 16:36:12    发布人:远客网络

MyBatis-Plus QueryWrapper 模糊查询

一、MyBatis-Plus QueryWrapper 模糊查询

1、利用MyBatis-Plus中的QueryWrapper构造模糊查询条件,轻松实现数据库查询功能。以用户表为例,若需根据用户名的关键词进行模糊查找,可按以下步骤操作。

2、首先定义一个方法,如searchUsers,接收关键词、分页信息作为参数。接着创建QueryWrapper实例,通过like方法构建模糊查询条件。在实际代码中,需替换your.package为实际的包路径,同时确保UserService和User类与项目需求相符。

3、public Page searchUsers(String keyword, int pageNum, int pageSize){

4、 QueryWrapper queryWrapper= new QueryWrapper>();

5、 queryWrapper.like("username", keyword);

6、 return userService.page(new Page>(pageNum, pageSize), queryWrapper);

7、在上述代码中,`like("username", keyword)`实现对用户名进行模糊匹配,`userService.page(new Page>(pageNum, pageSize), queryWrapper)`则完成分页查询操作。如此一来,MyBatis-Plus的QueryWrapper就帮助我们高效地构建了模糊查询,简化了查询逻辑。

二、Mybatis-Plus高级之LambdaQueryWrapper

在日常开发中,Mybatis-Plus为我们提供了丰富的操作数据库的API,其中LambdaQueryWrapper的引入使得查询语句的编写变得更加简洁且直观。本文旨在介绍LambdaQueryWrapper与QueryWrapper的区别,以及其在实际开发中的使用方法。

二、LambdaQueryWrapper与QueryWrapper的比较

在使用QueryWrapper时,我们通常需要明确指定查询字段在数据库中的名字,这在字段名称较为复杂或变化频繁时可能会带来不便。而LambdaQueryWrapper通过与实体类的属性进行映射,仅需输入驼峰命名即可实现查询,极大地提高了代码的可读性和维护性。

为了在项目中使用Mybatis-Plus,你需要添加以下Maven依赖:

四、LambdaQueryWrapper的三种使用方式

下面是一个简单的示例,展示了如何使用LambdaQueryWrapper进行查询操作:

private final TestService testService;

private TestMapper testMapper;

LambdaQueryWrapper query= new LambdaQueryWrapper>();

query.select(Test::getName).eq(Test::getId, 14);

List tests1= testMapper.selectList(query);

List tests2= testMapper.selectList(Wrappers.lambdaQuery().eq(Test::getId, 14));

List tests3= testMapper.selectList(Wrappers.query().lambda().eq(Test::getId, 16));

return Result.success("成功");

通过上述代码,我们可以看到执行的SQL语句具有相同的形式,这使得开发者可以根据个人偏好选择使用哪种方式编写查询代码。

六、LambdaQueryWrapper的构造器查询

LambdaQueryWrapper提供了多种构造器方法,以实现不同的查询条件,如:

eq("实体类::查询字段","条件值");

between("实体类::查询字段","区间一","区间二");

like("实体类::查询字段","模糊查询的字符");

in("实体类::查询字段","包括的值,分割");

orderByAsc("实体类::查询字段");

orderByDesc("实体类::查询字段");

ge("实体类::查询字段","要比较的值");

le("实体类::查询字段","要比较的值");

这些方法的使用使得查询语句的编写更加灵活且易于理解,进一步提升了代码的可维护性。

三、Mybatis-Plus使用Wrapper自定义SQL

使用Mybatis-Plus中的Wrapper自定义SQL,能够实现灵活且高效的查询操作。本文将详细介绍其用法及注意事项。

首先,准备环境:SpringBoot2.7.10, JDK17, MySQL8.30社区版, Mybatis-Plus3.5.3。整合步骤请参考SpringBoot整合mybatis-plus的相关资料。

在具体实现中,我们假设存在三张表:User、Role、Permission,它们之间存在关联。通过UserMapper.java及UserMapper.xml文件,我们可以实现联表查询。

具体操作时,Mybatis-Plus提供Wrapper类帮助我们自定义SQL。对于联表查询,LambdaQueryWrapper方便快捷,但如果需求更复杂,我们则需使用Wrapper自定义SQL。

在使用Wrapper时,需注意以下几点:

1.条件构造器的参数名应为ew或@Param(Constants.WRAPPER)注解。

2.使用${ew.customSqlSegment}时,Wrapper内部的entity生成的where语句不支持。

3.可参考官网文档条件构造器的详细说明。

在实际应用中,我们可以通过以下步骤操作:

1.准备相应的域名层(如User.java, RoleVo.java)。

2.在控制器层(如UserController.java)中调用服务层方法。

3.服务层接口(如UserService.java)定义查询方法。

4.实现类(如UserServiceImpl.java)中具体实现查询逻辑。

5.最终,在Mapper层(如UserMapper.java)与XML文件中完成查询逻辑的实现。

通过Mybatis-Plus的Wrapper自定义SQL,我们可以实现单表查询与联表查询。单表查询时,使用Wrapper能够灵活定义查询条件。而在联表查询时,尤其是需求复杂的情况下,Wrapper的优势凸显。下面将通过示例展示查询过程。

单表查询时,通过Wrapper自定义SQL,我们能够精准获取所需信息。IDEA控制台输出的SQL语句展示了查询逻辑。

对于联表查询,无论使用条件构造器还是自定义SQL,都有其适用场景。自定义SQL提供更强的动态SQL支持,例如查询指定字段时,可以直接使用in操作符传递参数,简化了XML配置中的写法。

总结,Mybatis-Plus的Wrapper自定义SQL提供了灵活的查询手段,尤其在处理复杂查询条件时优势明显。但在具体使用中,仍需根据实际需求选择合适的查询方式。