Mybatis—Weekend、WeekendCriteria用法

週末Mybatis-Plus で提供されるクエリカプセル化ツールで、主に複雑な条件付きクエリや動的 SQL クエリに使用されます。通常、週末は、Wrapper と WeekendCriteria の 2 つの部分で構成されます。

ラッパーこれは条件付きラッパーであり、複数の条件を追加でき、等しい、等しくない、より大きい、より小さい、いいね、でなどの and および or 関係をサポートします。

週末の基準これは条件付きコンストラクターであり、Wrapper のラッパーであり、複数の Wrapper を統合でき、Exists、NotExists、In、NotIn、Between などをサポートし、グループ化クエリ、集計クエリなどもサポートします。

インポートする必要がある依存関係

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.3</version>
</dependency>

ID、名前、年齢、性別などの属性を含むエンティティ クラス User があるとします。次に、年齢が 20 を超えるか、性別が 1 であるレコードをクエリしたいとします。

LambdaQueryWrapper オブジェクトを作成し、クエリ条件を設定します。

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.gt(User::getAge, 20)
                 .or()
                 .eq(User::getGender, 1);

ここでの LambdaQueryWrapper はクエリ条件をカプセル化するために使用されます。gt メソッドは「より大きい」を意味し、or メソッドは「または」を意味し、eq メソッドは「等しい」を意味します。

Weekend オブジェクトを作成し、クエリのエンティティ クラスを指定します。

Weekend<User> weekend = Weekend.of(User.class);

WeekendCriteria オブジェクトを取得します。

WeekendCriteria<User, Object> weekendCriteria = weekend.weekendCriteria();

LambdaQueryWrapper オブジェクトのクエリ条件を WeekendCriteria オブジェクトに追加します。

weekendCriteria.and(lambdaQueryWrapper);

クエリ操作を実行します。

List<User> userList = userMapper.selectByExample(weekend);

上記のコードでは、LambdaQueryWrapper オブジェクトを使用してクエリ条件を設定し、 or メソッドを使用して条件間の関係性を示します。次に、クエリ条件を WeekendCriteria オブジェクトに追加し、最後に selectByExample メソッドを実行してクエリを実行します。操作を実行し、条件を満たすユーザー オブジェクトのセットを取得します。

LambdaQueryWrapperこれは、クエリ条件を構築するために Mybatis-Plus で提供されるラッパーの 1 つです。ラッパーはラムダ式に基づいて実装されているため、クエリ条件が簡潔で理解しやすいだけでなく、ハードコーディングの問題も回避されます。LambdaQueryWrapper のメソッドは次のとおりです。

//eq:等于
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三");

//ne:不等于
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.ne(User::getName, "张三");

//gt:大于
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.gt(User::getAge, 18);

//ge:大于等于
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.ge(User::getAge, 18);

//lt:小于
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.lt(User::getAge, 18);

//le:小于等于
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.le(User::getAge, 18);

//like:模糊查询
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.like(User::getName, "张%");

//in:IN查询
List<Integer> ids = Arrays.asList(1, 2, 3);
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.in(User::getId, ids);

//notIn:NOT IN查询
List<Integer> ids = Arrays.asList(1, 2, 3);
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.notIn(User::getId, ids);

//isNull:NULL查询
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(User::getEmail);

//isNotNull:NOT NULL查询
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.isNotNull(User::getEmail);

//orderByAsc:升序排序
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.orderByAsc(User::getAge);

//orderByDesc:降序排序
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.orderByDesc(User::getAge);

これらのメソッドを必要に応じて動的に組み合わせて、複雑なクエリ条件を構築できます。

も使用できますWeekendCriteria オブジェクトクエリ条件を設定する

// 创建 Weekend 对象,并指定需要进行条件构造的实体类 FunctionEntity
Weekend<FunctionEntity> weekend = Weekend.of(FunctionEntity.class);

// 获取 WeekendCriteria 对象,用于设置条件
WeekendCriteria<FunctionEntity, Object> weekendCriteria = weekend.weekendCriteria();

// 在 WeekendCriteria对象中设置查询条件,可以使用链式编程的方式
// 例如:.andLike(FunctionEntity::getName, "函数名称")
weekendCriteria.andXXX(...);
List<User> userList = userMapper.selectByExample(weekend);

WeekendCriteria で定義されているクエリ メソッドは次のとおりです。

//andEqualTo:设置等于条件。
weekendCriteria.andEqualTo(FunctionEntity::getName, "函数名称");

//andNotEqualTo:设置不等于条件。
weekendCriteria.andNotEqualTo(FunctionEntity::getName, "函数名称");

//andIsNotNull:设置字段非空条件。
weekendCriteria.andIsNotNull(FunctionEntity::getName);

//andIsNull:设置字段为空条件。
weekendCriteria.andIsNull(FunctionEntity::getName);

//andLike:设置like条件。
weekendCriteria.andLike(FunctionEntity::getName, "%函数名称%");

//andNotLike:设置not like条件。
weekendCriteria.andNotLike(FunctionEntity::getName, "%函数名称%");

//andIn:设置in条件。
List<String> names = Arrays.asList("函数名称1", "函数名称2");
weekendCriteria.andIn(FunctionEntity::getName, names);

//andNotIn:设置not in条件。
List<String> names = Arrays.asList("函数名称1", "函数名称2");
weekendCriteria.andNotIn(FunctionEntity::getName, names);

//andBetween:设置between条件。
weekendCriteria.andBetween(FunctionEntity::getCreateTime, startTime, endTime);

//andNotBetween:设置not between条件。
weekendCriteria.andNotBetween(FunctionEntity::getCreateTime, startTime, endTime);

//andGreaterThan:大于条件。
weekendCriteria.andGreaterThan(FunctionEntity::getCreateTime, "2021-06-20");

//andGreaterThanOrEqualTo:大于等于条件。
weekendCriteria.andGreaterThanOrEqualTo(FunctionEntity::getCreateTime, "2021-06-20");

//andLessThan:小于条件。
weekendCriteria.andLessThan(FunctionEntity::getCreateTime, "2021-06-20");

//andLessThanOrEqualTo:小于等于条件。
weekendCriteria.andLessThanOrEqualTo(FunctionEntity::getCreateTime, "2021-06-20");

//andEqualToWithFunc:支持自定义条件,例如SQL函数。
weekendCriteria.andEqualToWithFunc(entity -> "`function_code` = " + funcCode);

//andIsNullWithFunc:支持自定义条件,查询条件字段为 null。
weekendCriteria.andIsNullWithFunc(entity -> "`function_code`");

//andIsNotNullWithFunc:支持自定义条件,查询条件字段不为 null。
weekendCriteria.andIsNotNullWithFunc(entity -> "`function_code`");

//andLikeWithFunc:支持自定义条件,查询条件为 Like。
weekendCriteria.andLikeWithFunc(entity -> "`function_name` LIKE '" + keyword + "%'");

//andNotLikeWithFunc:支持自定义条件,查询条件为 not like。
weekendCriteria.andNotLikeWithFunc(entity -> "`function_name` NOT LIKE '%" + keyword + "%'");

//andInWithFunc:支持自定义条件,查询条件为 In。
weekendCriteria.andInWithFunc(entity -> "`id`", ids);

//andNotInWithFunc:支持自定义条件,查询条件为 Not in。
weekendCriteria.andNotInWithFunc(entity -> "`id`", ids);

//andBetweenWithFunc:支持自定义条件,查询条件为 Between。
weekendCriteria.andBetweenWithFunc(entity -> "`create_time`", startTime, endTime);

//andNotBetweenWithFunc:支持自定义条件,查询条件为 Not between。
weekendCriteria.andNotBetweenWithFunc(entity -> "`create_time`", startTime, endTime);

//andGreaterThanWithFunc:支持自定义条件,大于查询。
weekendCriteria.andGreaterThanWithFunc(entity -> "`create_time`", "2021-06-20");

//andGreaterThanOrEqualToWithFunc:支持自定义条件,大于等于查询。
weekendCriteria.andGreaterThanOrEqualToWithFunc(entity -> "`create_time`", "2021-06-20");

//andLessThanWithFunc:支持自定义条件,小于查询。
weekendCriteria.andLessThanWithFunc(entity -> "`create_time`", "2021-06-20");

//andLessThanOrEqualToWithFunc:支持自定义条件,小于等于查询。
weekendCriteria.andLessThanOrEqualToWithFunc(entity -> "`create_time`", "2021-06-20");

上記のクエリ メソッドはすべてチェーンで呼び出して、より複雑なクエリ条件を組み合わせることができます。

Guess you like

Origin blog.csdn.net/l_010/article/details/131301294