背景
在使用Wrapper构建条件时,经常因为需要构建的条件过多需要写半个多小时,还容易粗心写错字段,所以就想搞个可以直接自动构建QueryWrapper的工具类。
思路
我们需要一个方法,能够根据条件参数对象的属性值来设置QueryWrapper的条件,同时需要返回一个我们所需要对应范型的QueryWrapper。
使用范型来确定返回的QueryWrapper的范型,使用反射来获取参数类中的属性值,同时需要区分字段的类型来确定选择该字段使用哪种查询方式。
实现
再获取字段名的时候有可能参数类的字段名不能直接根数据库表的字段名直接对应上,所以我直接复用了@TableField 注解,若是字段上有该注解就直接使用其对应的value属性值,若是没有该注解则就使用字段名,将字段名的驼峰命名法转换成下划线分割的格式。
/**
* 创建对应的wrapper
* @param param 参数对象
* @param <T> 范型
* @return 创建好的wrapper
*/
public static <T> QueryWrapper<T> createWrapper(Object param) {
QueryWrapper<T> wrapper = new QueryWrapper<>();
Class<?> dataClass = param.getClass();
try {
for (Field field : dataClass.getDeclaredFields()) {
field.setAccessible(t