springboot快速写API,直接传sql作为参数

很久没写过接口了,很多都忘记了,找了找资料都是比较常见的方式,没有直接用sql做参数的。

因为业务用数据可能会改,所以写成直接传sql的方式,后期省去了改的活,一劳永逸

一、新建工程

请添加图片描述

请添加图片描述

以上内容也可以手动在pom里添加

二、配置

用到的pom如下

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>

先写配置文件

spring.datasource.url=jdbc:mysql://xx.xx.xx.xx:xxxx/test?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
server.port=8001

三、代码部分

model层
1、SQLModel
public class SQLModel {
    private String sql;

    public String getSql() {
        return sql;
    }

    public void setSql(String sql) {
        this.sql = sql;
    }
}
2、ResultResponse
public class ResultResponse<T> {
    private List<T> data;

    public List<T> getData() {
        return data;
    }

    public void setData(List<T> data) {
        this.data = data;
    }
}
controller层
TestController
@RestController
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/ping")
    public String ping() {
        System.out.println("123");
        return "pong";
    }

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping("/getSqlResult")
    public ResultResponse getSqlResult(@RequestBody SQLModel sqlModel) {
        String sql = sqlModel.getSql();
        List<Map<String, Object>> list =  jdbcTemplate.queryForList(sql);
        ResultResponse resultResponse = new ResultResponse();
        resultResponse.setData(list);
        return resultResponse;
    }

}

四、测试

配置里写的端口是8001,

就可以访问了

localhost:8001

分别访问上面两个

localhost:8001/test

能看到页面有

123

说明正常了

最后一个就是重头戏了,直接传sql就行了

为了方便,用怕postman测试

请添加图片描述

用post方式,防止字符串超长

写在最后:
其实sql加密会比较好,但是这里没写,自己写的时候可以试一试,也不复杂,多个解密过程而已

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值