分页查询:
public PageInfo<Task> getTasks(TaskQuery taskQuery) {
Example e = new Example(Task.class);
Example.Criteria c = e.createCriteria();
//判断查询条件是否为空,对查询条件进行封装
if (StringUtils.isNotEmpty(taskQuery.getEngineId())) {
c.andEqualTo("engineId", taskQuery.getEngineId());
}
if (null!=taskQuery.getStatus() && 0!= taskQuery.getStatus()){
c.andEqualTo("status", taskQuery.getStatus());
}
//利用PageHelper进行分页查询
PageHelper.startPage(taskQuery.getCurrentPage(), taskQuery.getPageSize());
List<Task> tasks = taskMapper.selectByExample(e);
PageInfo<Task> info = new PageInfo<>(tasks);
return info;
}
修改:
public void updateTask(Long id,String taskName) {
Task task = Task.builder()
.name(taskName)
.lastExecuteTime(LocalDateTime.now())
.build();
Example e=new Example(Task.class);
Example.Criteria c = e.createCriteria().andEqualTo("id",id);
taskMapper.updateByExampleSelective(task,e);
}
删除:
public void deleteTasks(List<Long> ids) {
Example e=new Example(Task.class);
Example.Criteria c = e.createCriteria().andIn("id",ids);
taskMapper.deleteByExample(e);
}
其中查询可以根据稍微复杂的sql语句进行查询,但是不建议在dao层的方法中直接写sql进行查询,但下面提供写法样例
@Select("<script> " +
" select id,name,description,engine_id as engineId,param,frequency,cron,priority," + "status,head,execute_time as executeTime,create_user as createUser,create_time as createTime,update_time as updateTime\n" +
" from task where 1=1 \n" +
" <if test=\"task.engineId !=null \"> and engine_id=#{task.engineId} </if> " +
"<if test=\"task.status !=null \"> and status=#{task.status} </if> "+
" </script>")
List<Task> getTasks(@Param("task") Task task);