实现: 搭建物联网管理平台
实现设备(单片机)接入平台 并能上报数据下发命令 远程控制
Step 1
1.利用springboot框架搭建服务后端
所需环境:
- jdk1.8
- Maven 3.6.1
- mysql 5.7
1.1搭建初始化项目
(1)使用IDEA创建新工程
(2) 点击Spring Initializr ==>选择jdk版本1.8 ==>点击Next
(3) 点击Next
(4)选择开发的需要的依赖,也可以创建项目后再添加
(5) 创建项目
(6) 项目创建完成
(7) 添加依赖
(8) 项目结构
1.2创建数据库detest,创建表user
(1)创建数据库
(2) 创建表user
(3) 用IDEA连接数据库,向表中插入数据
1.3集成mybatis-plus 实现CRUD
编写springboot核心配置文件 application.yml
server:
port: 8088
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbtest?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
serialization:
write-dates-as-timestamps: false
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
auto-mapping-behavior: full
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台显示 sql语句
mapper-locations: classpath*:mapper/**/*Mapper.xml
global-config:
# 逻辑删除配置
db-config:
# 删除前
logic-not-delete-value: 1
# 删除后
logic-delete-value: 0
(1) springboot 集成 mybatis-plus
- 添加依赖(从mybatis-plus官网中找)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
- 编写Mybatis-plus 配置类
(2) 编写pojo一般类 ===>User
User.java
package com.b5.springboot.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private long id;
private String name;
private int age;
private String email;
}
(3)采用MVC架构从数据库中获取数据
1)、编写mapper层
- springboot 集成 mybatis-plus 进行CRUD
- mapper 层提供接口 ,集成 Mybatis-plus 的BaseMapper接口
package com.b5.springboot.mapper;
import com.b5.springboot.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository //代表持久层
public interface UserMapper extends BaseMapper<User> {
}
2)、编写service层
一、编写接口
package com.b5.springboot.service;
import com.b5.springboot.pojo.User;
import java.util.List;
public interface UserService {
//查询所有消息
List<User> findAll();
//通过id查询单个用户
User findById(Long id);
//通过名字查询用户
User findByName(String name);
//新增用户
Integer add(User user);
//修改
Integer updateById(User user);
//删除
Integer deleteById(Long id);
}
2)、编写实现类
UserServiceImpl.java
package com.b5.springboot.service.impl;
import com.b5.springboot.mapper.UserMapper;
import com.b5.springboot.pojo.User;
import com.b5.springboot.service.UserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service //代表业务层
public class UserServiceImpl implements UserService {
@Autowired //自动注入
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.selectList(null);
}
@Override
public User findById(Long id) {
return userMapper.selectById(id);
}
@Override
public User findByName(String name) {
// 创建条件构造器
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name",name); //模糊查询
return (User) userMapper.selectList(wrapper); //查询时添加条件构造器
}
@Override
public Integer add(User user) {
return userMapper.insert(user);
}
@Override
public Integer updateById(User user) {
return userMapper.updateById(user);
}
@Override
public Integer deleteById(Long id) {
return userMapper.deleteById(id);
}
}
3)、编写controller层
采用Result请求
- 编写需要返回的json类 R(封装数据信息)
R.java
package com.b5.springboot.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class R {
private int Code;
private Object object;
private String message;
}
UserController.java
package com.b5.springboot.controller;
import com.b5.springboot.pojo.User;
import com.b5.springboot.service.UserService;
import com.b5.springboot.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController //代表控制层,且只所有方法结果返回json字符串
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/findAll")
public R findAll() {
List<User> list = userService.findAll();
R r = new R();
if (list != null) { //能从数据库中查出数据 则代表查询成功 ,否则失败
r.setCode(200);
r.setObject(list);
r.setMessage("查询成功");
} else {
r.setCode(400);
r.setObject(list);
r.setMessage("查询成功");
}
return r;
}
@PostMapping("/add")
public R add(@RequestBody User user) {
Integer result = userService.add(user);
R r = new R();
if (result == 1) { //返回结果为1,则代表添加成功
r.setCode(200);
r.setObject(result);
r.setMessage("添加成功");
} else { //否则 ,添加失败
r.setCode(400);
r.setObject(result);
r.setMessage("添加失败");
}
return r;
}
@PutMapping("/update")
public R updateUserById (@RequestBody User user) {
Integer result = userService.updateById(user);
R r = new R();
if (result == 1) { //返回结果为1,则代表更新成功
r.setCode(200);
r.setObject(result);
r.setMessage("更新成功");
} else { //否则 ,更新失败
r.setCode(400);
r.setObject(result);
r.setMessage("更新失败");
}
return r;
}
@DeleteMapping("/delete/{id}")
public R deleteUserById(@PathVariable("id") Long id) {
Integer result = userService.deleteById(id);
R r = new R();
if (result == 1) { //返回结果为1,则代表删除成功
r.setCode(200);
r.setObject(result);
r.setMessage("删除成功");
} else { //否则 ,删除失败
r.setCode(400);
r.setObject(result);
r.setMessage("删除失败");
}
return r;
}
}
2. 启动浏览器,或用工具PostMan测试接口
2.1先启动浏览器访问接口,查看是否成功
启动项目
项目启动成功,访问8088端口
出现此页面代表项目启动成功由于浏览器只能发送get请求,所以我们先测试controller中的get请求接口
在浏览器地址栏输入以下url :http://localhost:8088/findAll ==>访问
出现json字符串则代表数据查询成功!
后台也显示sql信息
2.2使用postman测试 post、put 、delete接口
新建测试集合
在下栏url地址中输入请求
get请求成功
测试delete请求
由于采用Restful,所以要在路径后面直接添加要删除的id : http://localhost:8088/delete/5
删除成功
测试post请求 : http://localhost:8088/add
在postman中传递json字符串
添加成功
测试PUT请求 :
更新成功
至此,后端的CRUD接口都测试成功
接下来只需通过前端页面调用后端接口就可以进行CRUD