在不改变原有前端ruoyi-vue的情况下,使现有的后端迁移到beetlsql框架中,使beetlsql的分页和排序查询融合到原有的排序中,示例如下:

application.yml配置:

  • 
    ## beetlsql 配置 ##
    beetlsql:
      sqlManager: true
      sqlManagers: sqlManager1
      sqlManager1:
        #数据源
        ds: masterDataSource
        #默认为com,此选项配置beetlsql.daoSuffix来自动扫描com包极其子包下的所有以Dao结尾的Mapper类。
        basePackage: com.ruoyi.beetlsql.mapper
        #2.x模式是Dao,3.x改成Mapper
        daoSuffix: Mapper
        #2.x默认是DefaultNameConversion,3.x改成UnderlinedNameConversion
        nameConversion: org.beetl.sql.core.UnderlinedNameConversion
        #数据库方言,默认是org.beetl.sql.core.db.MySqlStyle.对应不同的数据库,其他还有OracleStyle,PostgresStyle,SqlServerStyle,DB2SqlStyle,SQLiteStyle,H2Style
        dbStyle: org.beetl.sql.core.db.MySqlStyle
        #默认是true,即向控制台输出执行时候的sql,参数,执行时间,以及执行的位置,每次修改sql文件的时候,自动检测sql文件修改.
        dev: true
        #默认为/sql, 作为存放sql文件的根目录,位于/resources/sql目录下
        sqlPath: sql
        # sql 文件编码
        sqlFileCharset: utf-8
    #  sqlManager2:
    #    #数据源
    #    ds: slaveDataSource
    #    #默认为com,此选项配置beetlsql.daoSuffix来自动扫描com包极其子包下的所有以Dao结尾的Mapper类。
    #    basePackage: com.ruoyi.beetlsql.mapper
    #    #2.x模式是Dao,3.x改成Mapper
    #    daoSuffix: Mapper
    #    #2.x默认是DefaultNameConversion,3.x改成UnderlinedNameConversion
    #    nameConversion: org.beetl.sql.core.UnderlinedNameConversion
    #    #数据库方言,默认是org.beetl.sql.core.db.MySqlStyle.对应不同的数据库,其他还有OracleStyle,PostgresStyle,SqlServerStyle,DB2SqlStyle,SQLiteStyle,H2Style
    #    dbStyle: org.beetl.sql.core.db.MySqlStyle
    #    #默认是true,即向控制台输出执行时候的sql,参数,执行时间,以及执行的位置,每次修改sql文件的时候,自动检测sql文件修改.
    #    dev: true
    #    #默认为/sql, 作为存放sql文件的根目录,位于/resources/sql目录下
    #    sqlPath: sql
    #    # sql 文件编码
    #    sqlFileCharset: utf-8

    beetlSql在workOrder.md中的SQL语句(分页查询):

  • selectWorkOrderList
    ===
    
    
    ```sql
        select #{page('*')}
        from work_order wk
        where 1 = 1
          -- @if(isNotEmpty(workOrder.projectName)){
          and project_name like concat('%', #{workOrder.projectName})
          -- @}
          -- @if(isNotEmpty(workOrder.projectSort)){
          and project_sort = #{workOrder.projectSort}
          -- @}
          -- @if(isNotEmpty(workOrder.reportPerson)){
          and report_person = #{workOrder.reportPerson}
          -- @}
          -- @if(isNotEmpty(workOrder.telephone)){
          and telephone = #{workOrder.telephone}
          -- @}
    
        。。。。
        
    ```

  • WorkOrderMapper:

  • public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
         /**
         * 查询工单管理列表
         *
         * @param workOrder 工单管理
         * @return 工单管理集合
         */
        PageResult<WorkOrder> selectWorkOrderList(@Param("workOrder") WorkOrder workOrder, DefaultPageRequest pageRequest);
    
    }

    Service服务设置:

  • public interface IWorkOrderService {
        /**
         * 查询工单管理列表
         *
         * @param workOrder 工单管理
         * @return 工单管理集合
         */
        public PageResult<WorkOrder> selectWorkOrderList(WorkOrder workOrder, DefaultPageRequest pageRequest);
    }
    
    @Service
    public class WorkOrderServiceImpl implements IWorkOrderService {
          /**
         * 查询工单管理列表
         *
         * @param workOrder 工单管理
         * @return 工单管理
         */
        @Override
        public PageResult<WorkOrder> selectWorkOrderList(WorkOrder workOrder,DefaultPageRequest pageRequest) {
            return workOrderMapper.selectWorkOrderList(workOrder,pageRequest);
        }
    }

    BaseController.java中增加:

  •     /**
         *  beetlsql分页与ruoyi中pagehelper结合
         *
         * @param pageResult 页面结果
         * @return {@link TableDataInfo }
         * @Author: carl
         * @Date: 2023/08/17 16:21:39
         */
        protected TableDataInfo getDataTableBeetlSql(DefaultPageResult pageResult)
        {
            TableDataInfo rspData = new TableDataInfo();
            rspData.setCode(HttpStatus.SUCCESS);
            rspData.setMsg("查询成功");
            rspData.setRows(pageResult.getList());
            rspData.setTotal(pageResult.getTotalRow());
            return rspData;
        }

    WorkOrderController业务控制器中:

  • public class WorkOrderController extends BaseController {
    /**
         * 查询工单管理列表
         */
        @PreAuthorize("@ss.hasPermi('system:order:list')")
        @GetMapping("/list")
        public TableDataInfo list( WorkOrder workOrder) {
            // 表格通用===分页处理
            startPage();
            // 当前页和页数
            Integer pageNum = PageUtils.getLocalPage().getPageNum();
            Integer pageSize = PageUtils.getLocalPage().getPageSize();
            // 默认排序
            String orderBy = StringUtils.isNotEmpty(PageUtils.getLocalPage().getOrderBy()) ? PageUtils.getLocalPage().getOrderBy() : " open_time desc";
        
            // 设置beetlsql的分页信息
            DefaultPageRequest pageRequest = (DefaultPageRequest) DefaultPageRequest.of(pageNum, pageSize);
            // 设置排序
            pageRequest.setOrderBy(orderBy);
    
            PageResult pr = workOrderMapper.selectWorkOrderList(workOrder, pageRequest);
            DefaultPageResult pageResult = (DefaultPageResult) pr;
            // printPageResult(pageResult);
    
            // 响应请求分页数据
            return getDataTableBeetlSql(pageResult);
        }
       
    }

Logo

快速构建 Web 应用程序

更多推荐