博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Spring Boot接受HTTP GET/POST请求的一个SQL并返回结果
阅读量:5371 次
发布时间:2019-06-15

本文共 3639 字,大约阅读时间需要 12 分钟。

这里说的意思是:我向我的Web服务器发送一个请求(因为GET请求的一些限制,所以最好使用POST请求,不过这里作为测试还是使用GET请求),请求中带一个sql参数,它对应查询的数据。然后我的Spring Boot服务器会根据这个sql返回对应的结果。

在写到这里的时候我并不知道结果是怎么样的,但是我的经验(虽然是很少的经验)冥冥之中告诉我是可以实现的。
毕竟不是很难。
所以我接下来开始做了。
首先进入:https://start.spring.io/
创建一个com.zifeiy.test的Spring Boot项目,并且包含了依赖:WebMySQLMyBatis
1235863-20190125085513229-607662629.png

然后我们在Eclipse中导入test项目。

这里跳过我们的MySQL安装过程,所以你在使用之前需要确保已经安装并启动了MySQL服务器,并且有一个名为testdb的database。
然后我们在applications.property文件中对数据库连接进行一下配置:

# DB Configurationspring.datasource.driverClassName=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8spring.datasource.username=rootspring.datasource.password=password# logginglogging.level.com.zifeiy.demo=debug# portserver.port=8092

以上内容有一些信息,包括连接到了本地的MySQL数据库,database为testdb,MySQL的用户名为root,密码为password,项目启动后的端口是8092

新建一个名为com.zifeiy.test.mapper的package,然后在里面新建一个名为GeneralMapper的interface,暂时不对GeneralMapper做任何更改。

然后我们再新建一个名为com.zifeiy.test.mapper.provider的package,然后建一个名为GeneralMapperProvider的class,内容如下:

package com.zifeiy.test.mapper.provider;public class GeneralMapperProvider {    public String select(String sql) {        return sql;    }}

然后我们再回过头去修改GeneralMapper的内容如下:

package com.zifeiy.test.mapper;import java.util.List;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.SelectProvider;import com.zifeiy.test.mapper.provider.GeneralMapperProvider;@Mapperpublic interface GeneralMapper {    @SelectProvider(method = "select", type = GeneralMapperProvider.class)    List select(@Param("sql") String sql);}

然后新建一个名为com.zifeiy.test.service的package,然后在里面新建一个名为GeneralService的接口:

package com.zifeiy.test.service;import java.util.List;public interface GeneralService {    List select(String sql);}

然后新建一个名为com.zifeiy.test.service.impl的包,然后在里面新建一个名为GeneralServiceImpl的类,让它实现GeneralService接口:

package com.zifeiy.test.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.zifeiy.test.service.GeneralService;import com.zifeiy.test.mapper.GeneralMapper;@Service@Transactionalpublic class GeneralServiceImpl implements GeneralService {        @Autowired    private GeneralMapper generalMapper;    @Override    public List select(String sql) {        return this.generalMapper.select(sql);    }}

然后新建一个名为com.zifeiy.test.controller的package,然后在里面新建一个名为GeneralController的类:

package com.zifeiy.test.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import com.zifeiy.test.service.GeneralService;@RestController@RequestMapping("/")public class GeneralController {        @Autowired    private GeneralService generalService;        @RequestMapping("/select")    public List select(@RequestParam(value = "sql", required = true) String sql) {        return this.generalService.select(sql);    }}

然后我是使用我们的测试数据,首先是第一个链接:

http://localhost:8092/select?sql=select 1

结果如下:

1235863-20190125094945839-1875191363.png

第二个链接:

http://localhost:8092/select?sql=select * from information_schema.tables

结果如下:

1235863-20190125095108730-112689350.png

发现不对,初步估计是mapper、service、controller中返回的List<Object>有问题,尝试将其改成List<Map<Object,Object>,然后再次运行。

第一个链接:

http://localhost:8092/select?sql=select 1

结果如下:

1235863-20190125095642907-570924.png

第二个链接:

http://localhost:8092/select?sql=select * from information_schema.tables

结果如下:

1235863-20190125095725348-1047397781.png

根据结果看来,应该没有问题了。

至此,想要达到的结果已经达到了。

转载于:https://www.cnblogs.com/zifeiy/p/10318146.html

你可能感兴趣的文章
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>
[转]后缀数组求最长重复子串
查看>>
设计模式——外观模式详解
查看>>
MVC3 控件
查看>>
mysql (一)
查看>>
photoshop图层样式初识1
查看>>
【.NET】使用HtmlAgilityPack抓取网页数据
查看>>
typedef的使用
查看>>
基于位置的本地商铺个性化推荐
查看>>
职场上一个人情商高的十种表现
查看>>
【底层原理】深入理解Cache (下)
查看>>
Elasticsearch安装中文分词插件IK
查看>>
进阶4:常见函数-单行函数
查看>>
简述企业信息化与企业架构关系
查看>>
npoi List 泛型导出
查看>>
流程图怎么画?分享绘制流程图简单方法
查看>>
squid的处理request和reply的流程
查看>>
硬件_陀螺仪
查看>>
三、winForm-DataGridView操作——DataGridView 操作复选框checkbox
查看>>