用 SpringBoot 写一个简单的后台服务( 实现一个简单的物联网系统-2 )

文章目录

    • 一、简介
    • 二、说明
    • 三、数据库
    • 四、后台服务代码
    • 五、学习路线(仅供参考)
    • 六、专栏地址

一、简介

  可以说站在Spring Boot的肩膀上,相对于我之前用最古老的servlet,完成一个简单的后台服务实在变得太容易太容易。但是对于一个完全不了解的人可以参考目录中的学习方法。对于实现远程浇花的功能,只需要处理APP 和 CC3200 发送过来的 get 、post 请求即可。

二、说明

  ①.Spring Boot 只是一个框架,通过联网帮助我们完成了各种配置,简化开发。
  ②.具体详细的步骤可以在学习SpringBoot的过程中不断实践。
注意:IDEA一定要用专业版,社区版的是不能构建SpringBoot项目的,如下图社区版根本没有红色圈中的那项:
用 SpringBoot 写一个简单的后台服务( 实现一个简单的物联网系统-2 )_第1张图片

三、数据库

  当然后台要负责与数据库进行交互,花卉的信息也全都存放在数据库上。后台的代码就是要对数据库进行增、删、改、查等操作。我用的是MySQL。直接装,或者用Docker。

四、后台服务代码

  1. Cotroller部分:这里即包含了APP的后台服务,也包含了CC3200的后台服务,后面不再赘述。
@Controller
public class FlowerManagerController {

    @Autowired
    JdbcTemplate jdbcTemplate;


    /*-------------------处理 APP 与后台的交互-----------------*/

    /**
     * 处理 APP 发送过来的 GET 请求 -> 查询花卉的所有信息返回给 APP
     *
     * @param flower_name
     * @return
     */
    @ResponseBody   //用于将数据写出去
    @GetMapping("/appQuery")   //这个方法用来处理query请求
    public List<Map<String, Object>> appGetResponse(@RequestParam String flower_name) {
        //字符串拼接的方法来实现sql语句中嵌套变量
        String querySql = "select * From flowers where name =" + "'" + flower_name + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(querySql);
        System.out.println(list);
        return list;
    }
    
    /**
     * 处理 APP POST 给服务器的数据 ->更新数据库中的浇水量 bulk  
     */
    @ResponseBody   //用于接收APP post 过来的数据
    @PostMapping("/appPost")   //这个方法用来处理App的post请求
    public void appPostResponse(@RequestBody String flower_info) throws JSONException {
        /*--更改花卉的浇水量--*/
        String flower_name;
    	int bulk;
        //1.解析post过来的数据
        JSONObject jsonObject = new JSONObject(flower_info);
        mFlower_name = jsonObject.getString("name");
        mBulk = jsonObject.getInt("bulk");

        //2.根据花卉名称和浇水量更新DB的数据
        String updateSql = "update flowers set bulk =" + "'" + bulk + "'" + " WHERE name =" + "'" + flower_name + "'";    
        jdbcTemplate.update(updateSql);
    }


    /*-----------------------处理 CC3200 与后台的交互-------------------*/

    /**
     * 处理CC3200 发送过来的 GET 请求 ->查询花卉的浇水量返回给CC3200  
     */
    @ResponseBody   //用于将数据写出去
    @GetMapping("/cc3200Query")   //这个方法用来处理query请求
    public Map<String, Object>  cc3200GetResponse(@RequestParam int monitor_id) {

        //字符串拼接的方法来实现sql语句中嵌套变量
        String querySql = "select * From flowers where monitor_id =" + "'" + monitor_id + "'";
        //这样返回的是一个map 而不是 list 的形式更方便CC3200那边去解析
        Map<String, Object> map =jdbcTemplate.queryForMap(querySql);
        System.out.println(map);
        return map;
    }

    /**
     * 处理CC3200 POST 给服务器的数据 ->更新花卉的状态信息 
     */
    @ResponseBody   //用于接收CC3200 post 过来的数据
    @PostMapping("/cc3200Post")   //这个方法用来处理CC3200Post请求
    public  void CC3200PostResponse(@RequestBody String flower_info) throws JSONException {
        /*--更新花卉的状态信息--*/
        int monitorID;
    	float co2;
    	float temperature;
    	float humidity;
  
        //1.解析post过来的数据
        JSONObject jsonObject = new JSONObject(flower_info);
        monitorID = jsonObject.getInt("monitorID");
        co2 = (float) jsonObject.getDouble("co2");
        temperature = (float) jsonObject.getDouble("temperature");
        humidity = (float) jsonObject.getDouble("humidity");

        //2.根据花卉监测系统ID更新数据库的数据
        String updateSql =
                "update flowers set co2 =" + "'" + co2 + "'" +","+
                "temperature ="+"'" + temperature + "'" +","+
                "humidity ="+"'" + humidity + "'" +
                " WHERE monitor_id ="+ "'" + monitorID + "'";
        jdbcTemplate.update(updateSql);
    }

}
  1. application.yaml 部分:这里根据实际的情况配置即可
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://公网IP或域名:3306/数据库名
    driver-class-name: com.mysql.cj.jdbc.Driver

五、学习路线(仅供参考)

  1. pringBoot 我是通过学习观看 尚硅谷 的Springboot视频学习的,下载地址可以搜哦,有人上传到网盘了,或者哔哩哔哩上也有,而IDEA的使用关注他的微信公众号就可以免费下载,个人感觉还是不错的。反正免费嘛。
  2. 在Ubuntu 上使用 Docker 可以参考下面的链接(安装MySQL也是很方便的)。
   https://cloud.tencent.com/developer/article/1350956

六、专栏地址

  https://blog.csdn.net/CSDN_X_W/column/info/33567

你可能感兴趣的:(IOT-CC3200,SpringBoot学习笔记,云服务器,CC3200))