动态设置表格的排序功能

该博客介绍了一个名为`SortPlugin`的组件,用于动态设置表格的排序功能。通过使用`SpringUtils`获取数据源,根据传入的参数执行SQL查询和更新操作,实现了根据主键ID、是否有parent_id字段、上移/下移标志以及手动输入的排序号来调整记录的排序。主要涉及数据源切换、SQL执行和事务管理。
摘要由CSDN通过智能技术生成
import com.alibaba.fastjson2.JSON;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.ruoyi.common.core.utils.SpringUtils;
import com.ruoyi.common.sort.utils.JDBCUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;
import java.io.Serializable;
import java.sql.*;
import java.util.*;

/**
 * 引入sort插件,实现自动上下排序
 *
 * @author 刘琪
 * @date 2024-04-26
 */
@Slf4j
@Component
public class SortPlugin {
    /**
     * 针对当前表结构实现排序
     *
     * @param datasourceName   数据源名称
     * @param tableName        需要操作的表名
     * @param id               查询主键ID
     * @param tableHasParentId true: 表格有parent_id字段, false: 表格没有parent_id字段
     * @param isUp             true: 上移, false: 下移
     * @return
     */
    public void sort(String datasourceName, String tableName, Serializable id, Boolean tableHasParentId, Boolean isUp) {
        DataSource dataSource = SpringUtils.getBean(DataSource.class);
        DynamicRoutingDataSource dynamicRoutingDataSource = (DynamicRoutingDataSource) dataSource;
        DataSource ds = dynamicRoutingDataSource.getDataSources().get(datasourceName);
        this.sort(ds, tableName, id, tableHasParentId, isUp, null);
    }

    /**
     * 针对当前表结构实现排序
     *
     * @param datasourceName   数据源名称
     * @param tableName        需要操作的表名
     * @param id               查询主键ID
     * @param tableHasParentId true: 表格有parent_id字段, false: 表格没有parent_id字段
     * @param isUp             true: 上移, false: 下移
     * @param sortNum          手动输入指定排序号
     * @return
     */
    public void sort(String datasourceName, String tableName, Serializable id, Boolean tableHasParentId, Boolean isUp, Integer sortNum) {
        DataSource dataSource = SpringUtils.getBean(DataSource.class);
        DynamicRoutingDataSource dynamicRoutingDataSource = (DynamicRoutingDataSource) dataSource;
        DataSource ds = dynamicRoutingDataSource.getDataSources().get(datasourceName);
        this.sort(ds, tableName, id, tableHasParentId, isUp, sortNum);
    }

    /**
     * 针对当前表结构实现排序
     *
     * @param ds        数据源
     * @param tableName 需要操作的表名
     * @param id        查询主键ID
     * @param sortNum   手动输入指定排序号
     * @return
     */
    public void sort(DataSource ds, String tableName, Serializable id, Boolean tableHasParentId, Integer sortNum) {
        this.sort(ds, tableName, id, tableHasParentId, null, sortNum);
    }


    /**
     * 针对当前表结构实现排序
     *
     * @param ds        数据源
     * @param tableName 需要操作的表名
     * @param id        查询主键ID
     * @param isUp      true: 上移, false: 下移
     * @return
     */
    public void sort(DataSource ds, String tableName, Serializable id, Boolean tableHasParentId, Boolean isUp) {
        this.sort(ds, tableName, id, tableHasParentId, isUp, null);
    }

    /**
     * 获取当前对象Map信息
     *
     * @param ds               数据源
     * @param tableName        需要操作的表名
     * @param id               查询主键ID
     * @param tableHasParentId true: 表格有parent_id字段, false: 表格没有parent_id字段
     * @param isUp             true: 上移, false: 下移
     * @param sortNum          手动输入指定排序号
     * @return
     */
    private void sort(DataSource ds, String tableName, Serializable id, Boolean tableHasParentId, Boolean isUp, Integer sortNum) {
        log.info("调用排序功能参数:tableName->{},id->{},isUp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值