JdbcTemplate 自定义返回的结果集字段和实体类映射

废话不多:抄袭代码

package com.webank.wedatasphere.qualitis.handler;

import com.webank.wedatasphere.qualitis.response.Grid;
import com.webank.wedatasphere.qualitis.response.SelectRuleResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class CommonJDBCService {
    // 公共的JDBC服务

    @Autowired
    private JdbcTemplate jdbcTemplate;


    /**
     * 分页查询 规则颗粒度---细粒自定义
     */
    public Grid<?> queryRuleDataGridByPageInSqlWhere(int pageNumber, int pageSize){
        String querySql = "select a.id,a.create_time,a.rule_template_name,a.cn_name,b.cluster_name,b.db_name,\n" +
                "b.table_name,b.col_name,b.col_name,b.filter \n" +
                "from qualitis_rule a \n" +
                "left join qualitis_rule_datasource b on a.id = b.rule_id \n" +
                "where a.project_id is null order by a.id asc";
        String countSql= "select count(1) \n" +
                "from qualitis_rule a \n" +
                "left join qualitis_rule_datasource b on a.id = b.rule_id \n" +
                "where a.project_id is null ";
        int offset = (pageNumber - 1) * pageSize;
        querySql = querySql + " limit " + offset + " , " + pageSize;
        List<SelectRuleResponse> resultSets = jdbcTemplate.query(querySql, new Object[]{}, (resultSet, i) -> {
            SelectRuleResponse selectRuleResponse = new SelectRuleResponse();
            selectRuleResponse.setId(resultSet.getLong("id"));
            selectRuleResponse.setRuleTemplateName(resultSet.getString("rule_template_name"));
            selectRuleResponse.setCnName(resultSet.getString("cn_name"));
            selectRuleResponse.setDatasourceName(resultSet.getString("cluster_name"));
            selectRuleResponse.setDbName(resultSet.getString("db_name"));
            selectRuleResponse.setTableName(resultSet.getString("table_name"));
            selectRuleResponse.setTableFields(resultSet.getString("col_name"));
            selectRuleResponse.setSqlWhere(resultSet.getString("filter"));
            selectRuleResponse.setCreateTime(resultSet.getString("create_time"));
            return selectRuleResponse;
        });
        Integer total = jdbcTemplate.queryForObject(countSql, Integer.class);
        return Grid.OkPage(resultSets, total == null ? 0 : total);

    }

}

posted on   白嫖老郭  阅读(248)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示