简明易懂Spring Boot 2021-07-06

简明易懂Spring Boot

为了尽快开发出一个能用的原型,用最快的速度搞了一下后端的接口。

项目结构

Entity层

Java Beans,也就是,实体的抽象。

Mapper层

和Entity对应的数据库操作,相当于运行SQL语句。

Service层

业务逻辑,针对的是具体问题,调用mapper层的方法。

Controller层

和前端交互,接受前端传递的参数,调用service的方法,返回需要的数据。

 

环境和框架

数据库 MySQL8.0
Spring Boot + Mybatis Plus

流程

建立项目

IDEA选择spring模板,Web下勾选SpringWeb,SQL勾选MySQL Driver,JDBC API 和 MyBatis Framework。
其余的项目名之类的设置好一路next下去就好。

添加项目依赖

因为spring boot项目使用的是maven,因此在pom.xml内添加即可。

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.2</version>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
</dependency>

额外用到的是lombok和mybatis plus。

链接数据库

数据库使用的是MySQL,比之前的达梦简单不少。按照数据库的过程略过。
链接数据库需要配置resources下的application.properties,格式如下:

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=Lm_14538
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

其中url最后的是数据库名,mysql的话是建立数据库时指定的。

数据库测试表

原型阶段只需要一个密钥表,需要的数据有密钥名和密钥本身,主键为ID,建表语句如下:

create table keys (
    id bigint(20) not null primary key ,
    name varchar(20) not null ,
    data varchar(255) not null
)

建立对应的实体类

@Data
@TableName("mykeys")
public class Key {
    private Long id;
    private String name;
    private String data;
}

因为使用了Lombok所以用@Data可以自动生成getter、setter、toString等一堆重复的玩意。
另外官方建议使用基本变量的包装类。

Mapper和Service

因为使用了Mybatis Plus,所以这两个的写法很简单。

Mapper

@Mapper
public interface KeyMapper extends BaseMapper<Key> {
}

Service

public interface KeyService extends IService<Key> {
}

@Service
public class KeyServiceImpl extends ServiceImpl<KeyMapper, Key> implements KeyService{
}

只需要继承两个类就可以实现基本的数据库操作,对于当前的原型来说已经够用了。

Controller

接口也就是在这里写的,命名方式参照之前的Rest部分。

@RestController
@RequestMapping("keys")
public class KeyController {

    //等价于@Autowired 现在官方更推荐下面的方式
    final
    KeyService keyService;

    public KeyController(KeyService keyService) {
        this.keyService = keyService;
    }

    @GetMapping
    public ResponseEntity getAllKeys() {
        List<Key> keys = keyService.list();
        return ResponseEntity.ok(keys);
    }
}

@RestController
将返回的对象数据直接以 JSON 或 XML 形式写入HTTP 响应(Response)中,因为项目是前后端分离的,前端显示也是调用接口获得Json数据,因此用这个就可以了。
@RequestMapping 参数指定了url
@GetMapping
等价于 @RequestMapping(method = RequestMethod.POST) 其他的HTTP方法都有对应。

另外几个没有用到的,但后面可能有用。
@PathVariable 取url地址中的参数。
@RequestParam url的查询参数值。
@RequestBody 可以将 HttpRequest body 中的 JSON 类型数据反序列化为合适的 Java 类型。

返回值ResponseEntity: 表示整个HTTP Response:状态码,标头和正文内容。我们可以使用它来自定义HTTP Response 的内容。

测试

运行项目,浏览器访问 localhost:8080/keys 可以获得Json格式的所有密钥。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值