MyBatis利用PageHelper进行多条件分页查询、修改、删除

分页查询:

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);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值