比如:我的实体类有50个属性,使用mybatisplus 的情况下我怎么实现按这50个属性是否有值经行查询,并且这50个属性是用驼峰命名法得来的,与数据库的字段不一致
我们可以用QueryWrapper
对象用于构建查询条件。使用反射机制遍历实体类的所有属性,并将属性名和属性值作为查询条件添加到QueryWrapper
对象中。同时,可以使用StringUtils.camelToUnderline()
方法将驼峰式命名的属性名转换为下划线命名的列名。
代码如下:
@Service
public class ZsFabuServiceImpl extends ServiceImpl<ZsFabuMapper, ZsFabu> implements IZsFabuService {
@Override
public List<ZsFabu> selectZsFabuList(ZsFabu zsFabu) {
QueryWrapper<ZsFabu> wrapper = new QueryWrapper<>();
for (Field field : zsFabu.getClass().getDeclaredFields()) {
field.setAccessible(true);// 设置可访问性,以便获取私有属性
Object value = field.get(zsFabu);
String camel = StringUtils.camelToUnderline(field.getName());
wrapper.eq(value != null,camel,value);
}
return this.list(wrapper);
}
}