import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.List;
// Assuming User and QueryUserParam classes are defined elsewhere.
// Example User class:
// class User {
// private Long id;
// private String name;
// private Integer age;
// private Long roleId;
// // getters and setters
// }
public class UserService {
private UserMapper userMapper; // Assume UserMapper is injected
public List<User> findUsers(QueryUserParam queryParam) {
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
// Traditional Wrapper Construction:
wrapper.in(!CollectionUtils.isEmpty(queryParam.getRoleIdList()), User::getRoleId, queryParam.getRoleIdList());
wrapper.le(queryParam.getMaxAge() != null, User::getAge, queryParam.getMaxAge());
wrapper.like(StringUtils.hasText(queryParam.getNameKeyword()), User::getName, queryParam.getNameKeyword());
// ... other conditions
return userMapper.selectList(wrapper);
}
public List<User> findUsersWithAnnotation(QueryUserParam queryParam) {
// Using annotation-wrapper to generate the wrapper:
// Option 1: Implement AnnotationWrapper in QueryUserParam
// List<User> users = userMapper.selectList(queryParam.lambdaWrapper());
// Option 2: Use WrapperGenerator
LambdaQueryWrapper<User> wrapper = WrapperGenerator.generateWrapper(queryParam);
return userMapper.selectList(wrapper);
}
}
// Example QueryUserParam class utilizing annotation-wrapper:
// import com.github.nanyouqiaoM.annotationwrapper.annotation.Wrapper;
// import com.github.nanyouqiaoM.annotationwrapper.enums.SqlType;
// import com.github.nanyouqiaoM.annotationwrapper.interfaces.AnnotationWrapper;
// import lombok.AccessLevel;
// import lombok.Data;
// import lombok.experimental.FieldDefaults;
// import java.util.List;
// @Data
// @FieldDefaults(level = AccessLevel.PRIVATE)
// public class QueryUserParam implements AnnotationWrapper {
// /**
// * Primary Key ID
// */
// @Wrapper(SqlType.EQ)
// Long id;
// /**
// * Name
// */
// @Wrapper(SqlType.LIKE)
// String nameKeyword;
// /**
// * Age
// */
// @Wrapper(value = SqlType.LE, column = "age")
// Integer maxAge;
// /**
// * Email
// */
// @Wrapper(SqlType.EQ)
// String email;
// /**
// * Role ID
// */
// @Wrapper(SqlType.IN)
// List<Long> roleIdList;
// }
// Add Maven dependencies:
/*
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.NanyouqiaoM</groupId>
<artifactId>annotation-wrapper</artifactId>
<version>1.1</version>
<!-- Exclude mybatis-plus if already included in your project -->
<!--
<exclusions>
<exclusion>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
</exclusion>
</exclusions>
-->
</dependency>
*/
Generating MyBatis-Plus Query Wrappers with Annotations
Posted on Sat, 03 Oct 2026 16:07:50 +0000 by Supernovas