MyBatis-Plus QueryWrapper 模糊查询
发布时间:2025-05-23 16:36:12 发布人:远客网络
一、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提供了灵活的查询手段,尤其在处理复杂查询条件时优势明显。但在具体使用中,仍需根据实际需求选择合适的查询方式。