使用Spring Boot接受HTTP GET/POST请求的一个SQL并返回结果

news/2024/6/17 23:24:15 标签: 数据库, java, 开发工具

这里说的意思是:我向我的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 Configuration
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=password
# logging
logging.level.com.zifeiy.demo=debug
# port
server.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,内容如下:

java">package com.zifeiy.test.mapper.provider;

public class GeneralMapperProvider {
    public String select(String sql) {
        return sql;
    }
}

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

java">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;

@Mapper
public interface GeneralMapper {
    @SelectProvider(method = "select", type = GeneralMapperProvider.class)
    List<Object> select(@Param("sql") String sql);
}

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

java">package com.zifeiy.test.service;

import java.util.List;

public interface GeneralService {
    List<Object> select(String sql);
}

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

java">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
@Transactional
public class GeneralServiceImpl implements GeneralService {
    
    @Autowired
    private GeneralMapper generalMapper;

    @Override
    public List<Object> select(String sql) {
        return this.generalMapper.select(sql);
    }
}

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

java">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<Object> 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


http://www.niftyadmin.cn/n/1803448.html

相关文章

Keras实现LSTM

一、先看一个Example 1、描述&#xff0c;输入为一个字母&#xff0c;输出为这个字母的下一个顺序字母 A->BB->CC->D2、Code import numpy from keras.models import Sequential from keras.layers import Dense from keras.layers import LSTM from keras.utils impo…

解决浏览器访问GitHub响应时间长,速度慢的问题

文章目录前言一、设置域名ip二、注释Host文件其他内容&#xff08;关键&#xff09;注&#xff1a;推荐使用SwitchHost软件三、刷新DNS前言 提示&#xff1a;访问Git慢的解决方案&#xff0c;只需设置域名ip即可。 一、设置域名ip 进入网址 199.232.69.194就是需要修改的地址…

修剪草坪 (单调队列)

修剪草坪 这道题我们可以换一个角度思考&#xff0c;把题意看成&#xff1a; 我们找到哪些奶牛不选&#xff0c;且满足每两个相邻的不选的奶牛之间不能间隔超过k&#xff0c;当这些不选的奶牛的贡献总和最低时&#xff0c;我们选的奶牛贡献就最高了&#xff01; 这个过程用单调…

测试多线程环境的Sl4j日志的配置实现

文章目录前言一、POM文件二、resources下logback.xml三、测试结果前言 使用于普通的maven项目。通过下列的顺序配置&#xff0c;可以实现主线程和运行线程的显示&#xff0c;方便多线程的学习。 一、POM文件 <dependencies><dependency><groupId>org.proje…

团队编程

1.团队简介&#xff1a; &#xff08;1&#xff09;团队名称&#xff1a;火箭队 简介&#xff1a;这个队名是神奇宝贝里面的一个反派的队名&#xff0c;这个反派虽然很菜而且每一集都会失败&#xff0c;但是他们越挫越勇从来都没有放弃过。 &#xff08;2&#xff09;队员学号 …

团队项目NABCD

各位同学大家好&#xff1a; 我们的产品{ TD信息通 }是为了解决 学生在学校想自习时找不到空闲教室&#xff0c;不知道下课准确时间&#xff0c;每次都要通过大屏幕获取信息,通过QQ群聊获取信息&#xff0c;可能出现遗漏&#xff0c; 不仅浪费精力而且还影响其他人正常上课。他…

springMVC开发配置全局乱码过滤器

文章目录前言web.xml文件前言 在使用springMVC时&#xff0c;post请求可能会形成中文乱码问题&#xff0c;此时需要在web.xml中配置此filter&#xff0c;保证以正确的格式获取数据。 web.xml文件 <?xml version"1.0" encoding"UTF-8"?> <web-…

mysql 自连接查询

/* 自连接查询自连接就是一个表和它自身进行连接&#xff0c;是多表连接的特殊情况。在自连接查询中&#xff0c;要先在FROM字句中为表分别定义两个不同的别名&#xff0c;然后使用这两个别名写出一个连接条件。 条件比较在同一个表中的情况*/ --任务1&#xff1a;查询课程类别…