简单记录一下,实现以上按条件查询并导出的功能
QueryWrapper<Provider> queryWrapper = new QueryWrapper<Provider>();
SimpleDateFormat sim2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
queryWrapper.like(!ObjectUtils.isEmpty(providerVo.getCode()),
"code",providerVo.getCode());
queryWrapper.like(!ObjectUtils.isEmpty(providerVo.getName()),
"name",providerVo.getName());
queryWrapper.like(!ObjectUtils.isEmpty(providerVo.getState()),
"state",providerVo.getState());
if (!ObjectUtils.isNull(providerVo.getStartTime())){
queryWrapper.between( "create_time",sim2.format(providerVo.getStartTime()),sim2.format(providerVo.getEndTime()));
}
queryWrapper.orderByAsc("create_time");
List<Provider> providers = baseMapper.selectList(queryWrapper);
按code,name,state 以及指定时间范围内查询,代码简单好理解,但是尴尬的是只能执行一次,第二次及以后代码返回成功但没有数据.
通过修改logging.level设置日志级别查看SQL语句
logging:
level:
com.lingqing.myauthority: trace
为了方便,将queryWrapper设置为全局变量,导致每次查询条件都被记录,所以每次查询后都必须将使用过的queryWrapper清空
queryWrapper.clear();
谨记全局变量使用后必须清空。