一、LambdaQueryWrapper小标题
LambdaQueryWrapper是mybatis-plus提供的一个查询构造器,通过它可以封装查询条件,使得查询更加简单方便,尤其在复杂查询时特别有用,下面我们来详细介绍LambdaQueryWrapper的使用方法。
1、LambdaQueryWrapper的创建
LambdaQueryWrapper的创建非常简单,只需要用到静态方法lambdaQueryWrapper方法即可:
LambdaQueryWrapper<UserEntity> wrapper = new LambdaQueryWrapper<>();
上述代码表示定义了一个用于UserEntity的LambdaQueryWrapper对象。LambdaQueryWrapper<>表示泛型,用于指定查询的实体类。
2、LambdaQueryWrapper的基本使用
通过LambdaQueryWrapper对象可以构建SQL查询条件:
wrapper.eq(UserEntity::getName, "admin")
.like(UserEntity::getEmail, "example");
上述代码依次表示设置查询条件为:name等于admin,且email包含example。eq方法表示等于,like方法表示包含。括号中的参数是Lambda表达式,表示实体类的属性和对应的取值。
更多LambdaQueryWrapper的操作请查阅官方文档。
二、QueryMapper小标题
QueryMapper是一种自定义的SQL查询方法,通过它可以在接口中定义SQL查询方法。下面我们来详细介绍QueryMapper的使用方法。
1、QueryMapper的创建
QueryMapper的创建非常简单,只需要定义一个接口,并在接口方法上使用@Query注解即可:
public interface UserMapper extends BaseMapper<UserEntity> {
@Query("select * from user where name like #{name}")
List<UserEntity> selectByName(@Param("name") String name);
}
上述代码表示定义了一个返回UserEntity列表的selectByName方法,查询条件为name包含指定参数。@Query注解的参数为自定义的SQL查询语句,其中#{name}表示查询条件中的name参数,@Param("name")表示方法参数中的name参数,两者对应。
2、QueryMapper的使用
使用QueryMapper查询非常简单,只需要通过MapperFactoryBean获取对应的Mapper对象,并调用定义的查询方法即可:
@Autowired
private UserMapper userMapper;
public void testSelectByName() {
List<UserEntity> users = userMapper.selectByName("admin");
Assert.assertEquals(1, users.size());
}
上述代码表示通过userMapper的selectByName方法查询名字为admin的用户,断言查询结果数量为1。
三、LambdaQueryWrapper和QueryMapper联合使用小标题
在实际开发中,我们往往需要使用LambdaQueryWrapper和QueryMapper联合查询数据库,下面以查询用户列表为例,演示使用LambdaQueryWrapper和QueryMapper的联合使用方法:
public interface UserMapper extends BaseMapper<UserEntity> {
@Query("select * from user where 1=1")
List<UserEntity> selectListWrapper(@Param(Constants.WRAPPER) Wrapper<UserEntity> wrapper);
}
上述代码中,方法名为selectListWrapper,该方法使用了QueryMapper定义的方法,同时传入了一个Wrapper参数。Wrapper<UserEntity>表示LambdaQueryWrapper,Constants.WRAPPER表示Wrapper的标识,这样就实现了LambdaQueryWrapper和QueryMapper的联合使用。
调用示例代码:
LambdaQueryWrapper<UserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserEntity::getName, "admin")
.like(UserEntity::getEmail, "example");
List<UserEntity> users = userMapper.selectListWrapper(wrapper);
上述代码表示定义了一个LambdaQueryWrapper,设置查询条件为:name等于admin,且email包含example。然后通过userMapper的selectListWrapper方法查询用户列表。
四、总结
LambdaQueryWrapper和QueryMapper是mybatis-plus提供的两个强大的工具,联合使用可以实现更为灵活和便捷的查询操作。它们的使用方法非常简单,但是在实际开发中却非常实用和方便。