自定义数据源

实现接口com.github.alenfive.rocketapi.datasource.DataSourceDialect

SQL默认实现:

/**
 * 关系型数据源,JdbcTemplate所操作的数据源
 */
public class SqlDataSource extends DataSourceDialect {

    protected JdbcTemplate jdbcTemplate;

    protected NamedParameterJdbcTemplate parameterJdbcTemplate;

    private SqlDataSource(){}

    public SqlDataSource(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
        this.parameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
    }

    public SqlDataSource(JdbcTemplate jdbcTemplate, boolean storeApi) {
        this.storeApi = storeApi;
        this.jdbcTemplate = jdbcTemplate;
        this.parameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
    }


    @Override
    public void saveApiInfo(ApiInfo apiInfo) {
        ApiJpaUtil.insert(parameterJdbcTemplate,apiInfo);
    }

    @Override
    public ApiInfo findApiInfoById(ApiInfo apiInfo) {
        return ApiJpaUtil.findById(parameterJdbcTemplate,apiInfo);
    }

    @Override
    public void deleteApiInfo(ApiInfo apiInfo) {
        ApiJpaUtil.deleteById(parameterJdbcTemplate,apiInfo);
    }

    @Override
    public void updateApiInfo(ApiInfo apiInfo) {
        ApiJpaUtil.updateById(parameterJdbcTemplate,apiInfo);
    }

    @Override
    public List<ApiInfo> listApiInfoByEntity(ApiInfo apiInfo) {
        return ApiJpaUtil.listByEntity(parameterJdbcTemplate,apiInfo);
    }

    @Override
    public void saveApiInfoHistory(ApiInfoHistory apiInfoHistory) {
        ApiJpaUtil.insert(parameterJdbcTemplate,apiInfoHistory);
    }

    @Override
    public List<ApiInfoHistory> listApiInfoHistoryByEntity(ApiInfoHistory apiInfoHistory, IApiPager apiPager, Page page) {
        return ApiJpaUtil.pageByEntity(parameterJdbcTemplate,apiInfoHistory,this,apiPager,page);
    }

    @Override
    public void saveApiExample(ApiExample apiExample) {
        ApiJpaUtil.insert(parameterJdbcTemplate,apiExample);
    }

    @Override
    public List<ApiExample> listApiExampleByEntity(ApiExample apiExample, IApiPager apiPager, Page page) {
        return ApiJpaUtil.pageByEntity(parameterJdbcTemplate,apiExample,this,apiPager,page);
    }

    @Override
    public void deleteExample(ApiExample apiExample) {
        ApiJpaUtil.deleteById(parameterJdbcTemplate,apiExample);
    }

    @Override
    public void saveApiConfig(ApiConfig apiConfig) {
        ApiJpaUtil.insert(parameterJdbcTemplate,apiConfig);
    }

    @Override
    public void updateApiConfig(ApiConfig apiConfig) {
        ApiJpaUtil.updateById(parameterJdbcTemplate,apiConfig);
    }

    @Override
    public List<ApiConfig> listApiConfigByEntity(ApiConfig apiConfig) {
        return ApiJpaUtil.listByEntity(parameterJdbcTemplate,apiConfig);
    }


    @Override
    public List<Map<String,Object>> find(StringBuilder script, ApiInfo apiInfo, ApiParams apiParams) {
        List<Map<String,Object>> resultList = jdbcTemplate.queryForList(script.toString());
        return resultList.stream().map(this::toReplaceKeyLow).collect(Collectors.toList());
    }

    @Override
    public Long update(StringBuilder script, ApiInfo apiInfo, ApiParams apiParams) {
        return Long.valueOf(jdbcTemplate.update(script.toString()));
    }

    @Override
    public Long remove(StringBuilder script, ApiInfo apiInfo, ApiParams apiParams) {
        return Long.valueOf(jdbcTemplate.update(script.toString()));
    }

    @Override
    public Object insert(StringBuilder script, ApiInfo apiInfo, ApiParams apiParams) {
        KeyHolder keyHolder = new GeneratedKeyHolder();
        PreparedStatementCreator preparedStatementCreator = con -> {
            PreparedStatement ps = con.prepareStatement(script.toString(), Statement.RETURN_GENERATED_KEYS);
            return ps;
        };
        jdbcTemplate.update(preparedStatementCreator, keyHolder);
        return keyHolder.getKeyList().stream().map(item->item.get("GENERATED_KEY")).collect(Collectors.toList());
    }

    @Override
    public String buildCountScript(String script, ApiInfo apiInfo, ApiParams apiParams, IApiPager apiPager,Page page) {
        return script;
    }

    @Override
    public String buildPageScript(String script, ApiInfo apiInfo, ApiParams apiParams,  IApiPager apiPager,Page page) {
        return script;
    }

    @Override
    public String transcoding(String param) {
        return param
                .replace("\'","\\\'");
    }

    @Override
    public List<TableInfo> buildTableInfo() {
        return null;
    }
}

Last updated