jeecg-boot通过sql获取的数据集,实现分页查询

jeecg-boot通过sql获取的数据集,实现分页查询

1、controller实现

/**
     * 分页列表查询(SQL)
     *
     * @param cronJobList
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @AutoLog(value = "发布任务清单表SQL-分页列表查询")
    @ApiOperation(value = "发布任务清单表SQL-分页列表查询", notes = "发布任务清单表SQL-分页列表查询")
    @GetMapping(value = "/list2")
    public Result<?> queryPageListBySql(CronJobList cronJobList,
                                        @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                        HttpServletRequest req) {
        Page<CronJobList> page = new Page<CronJobList>(pageNo, pageSize);
        IPage<CronJobList> pageList = cronJobListService.queryPageListBySql(page, cronJobList);
        return Result.OK(pageList);
    }

2、service层

2.1接口

package org.jeecg.modules.task.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.task.entity.CronJobList;

/**
 * @Description: 发布任务清单表
 * @Author: jeecg-boot
 * @Date: 2022-09-29
 * @Version: V1.0
 */
public interface ICronJobListService extends IService<CronJobList> {
    IPage<CronJobList> queryPageListBySql(Page<CronJobList> page, CronJobList cronJobList);
}

2.2实现

package org.jeecg.modules.task.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.task.entity.CronJobList;
import org.jeecg.modules.task.mapper.CronJobListMapper;
import org.jeecg.modules.task.service.ICronJobListService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Description: 发布任务清单表
 * @Author: jeecg-boot
 * @Date: 2022-09-29
 * @Version: V1.0
 */
@Service
public class CronJobListServiceImpl extends ServiceImpl<CronJobListMapper, CronJobList> implements ICronJobListService {
    @Override
    public IPage<CronJobList> queryPageListBySql(Page<CronJobList> page, CronJobList cronJobList) {
        List<CronJobList> cronJobLists = this.baseMapper.queryPageListBySql(page, cronJobList);
        return page.setRecords(cronJobLists);
    }
}

3、mapper接口

package org.jeecg.modules.task.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.task.entity.CronJobList;

import java.util.List;

/**
 * @Description: 发布任务清单表
 * @Author: jeecg-boot
 * @Date: 2022-09-29
 * @Version: V1.0
 */
public interface CronJobListMapper extends BaseMapper<CronJobList> {
    List<CronJobList> queryPageListBySql(Page<CronJobList> page, CronJobList dto);
}

4、xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.task.mapper.CronJobListMapper">

    <!--查list分组归并,状态、时间排序-->
    <select id="queryPageListBySql" parameterType="Object"
            resultType="org.jeecg.modules.task.entity.CronJobList">
        SELECT
        cjl.*
        FROM
        CRON_JOB_LIST cjl
        LEFT JOIN (
        SELECT
        LIST_CODE,
        CASE

        WHEN min( CASE WHEN CRON_STATUS = 1 THEN 1 ELSE 0 END ) = 0 THEN
        0 ELSE 1
        END rn
        FROM
        CRON_JOB_LIST cjl
        GROUP BY
        LIST_CODE
        ) tt ON cjl.LIST_CODE = tt.list_code
        WHERE
        1 = 1
        <if test="dto.cronName !=null and dto.cronName != ''">
            AND cjl.cron_name like concat(concat('%',#{dto.cronName}),'%')
        </if>
        <if test="dto.demindCycletxt !=null and dto.demindCycletxt != ''">
            AND cjl.demind_cycletxt like concat(concat('%',#{dto.demindCycletxt}),'%')
        </if>
        <if test="dto.cronStatus !=null">
            AND cjl.cron_status = #{dto.cronStatus}
        </if>
        ORDER BY
        tt.rn,
        DEMIND_DATE DESC

    </select>

</mapper>

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Jeecg-boot是一款基于Spring Boot和Mybatis-Plus开发的快速开发平台。在使用Jeecg-boot时,尤其是在进行数据库操作时,需要注意防范SQL注入攻击。 SQL注入是一种常见的安全漏洞,攻击者通过在输入框或URL参数中注入恶意的SQL语句,以达到绕过系统验证和获取非授权信息的目的。对于Jeecg-boot来说,防止SQL注入攻击的措施主要包括以下几点: 1. 参数校验与过滤:在接收和处理用户输入的数据时,应进行合法性检查和过滤。例如,可以使用正则表达式对输入数据进行验证,并排除可能的恶意字符。 2. 使用参数化查询:对于用户输入的数据,尽量使用参数化查询(Prepared Statement),而不是拼接SQL语句。参数化查询可以将输入的数据当作参数传递给数据库,避免了直接将用户输入拼接到SQL语句中的风险。 3. 权限控制:在系统设计和开发中,要根据用户角色和权限设置合适的数据访问权限。做到只有授权的用户才能执行特定的数据库操作,从而减少了注入攻击的可能性。 4. 使用ORM框架:Jeecg-boot默认使用Mybatis-Plus作为持久层框架,Mybatis-Plus提供了ORM(对象关系映射)功能,可以有效地避免SQL注入攻击。ORM框架会将对象与数据库表进行映射,自动生成SQL语句,减少手动编写SQL的机会。 综上所述,为了防止Jeecg-boot发生SQL注入,我们可以采取参数校验与过滤、使用参数化查询、权限控制以及使用ORM框架等措施。同时,在开发和维护过程中,还应关注相关安全漏洞的更新和修复,提高系统的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值