前言
SpringBoot和SpringMVC区别
两者没有必然的联系,SpringBoot相当于SpringMVC的升级版
SpringBoot特点
1.化繁为简,简化配置
2.备受关注,是下一代框架
3.微服务的入门级微框架
当前流行架构是微服务,Spring家族为微服务提供一整套组件统称SpringCloud,SpringCloud是建立在SpringBoot的基础之上的,学习SpringBoot是为以后微服务打基础。
1.第一个SpringBoot程序
⚠️注意:请尽可能的保持版本一致
- jdk :1.8.191
- maven:3.5.3
- SpringBoot:2.1.3
⚠️注意:Spring Boot版本一定要选正式版,即版本号后没有(SANPSHOT)字样。带有(SANPSHOT)字样的版本只提供一个快照功能。
⚠️删除以下不需要的文件
⚠️在pom.xml中手动更改SpringBoot版本为2.1.3,目的是为了与此教程一致,避免因版本不同造成的问题。
运行项目
HelloWorld
2.自定义属性配置
配置方式
方式一:在application.properties中配置
方式二:在application.yml中配置(推荐)
⚠️其实两者写法没有区别,只不过是展示方式不同,后者会将相同内容折叠起来,更加清晰,故推荐。
⚠️配置中key:后一定要加一个空格,复制不符合文件格式,项目启动会报错
使用
方式一:单个配置
方式二:配置类
⚠️出现此提示的解决办法:Maven引入依赖
<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId> spring-boot-configuration-processor </artifactId>
<optional> true </optional>
</dependency>
版本控制
3.Controller的使用
注解 | 位置 | 说明 | 举例 |
---|---|---|---|
@Controller | 类名 | 处理Http请求 | |
@ResponseBody | 类名、方法名 | 返回数据 | |
@RestController | 类名 | Spring4后新加 | |
@RestMapping | 类名 | 配置url映射 | @RestMapping(“/hello”) |
@gettMapping | 方法名 | get请求 | @gettMapping(“/say”) |
@postMapping | 方法名 | post请求 | @postMapping(“/say”) |
@RequestMapping | 类名、方法名 | get、post请求 | @RequestMapping(“/say”) |
@PathVariable | 方法参数中 | 获取url中的数据 | |
@RequestParam | 方法参数中 | 获取请求参数的值 | |
⚠️@Controller + @ResponseBody = @RestController | |||
⚠️@GetMapping 可以传入数组 |
⚠️@PathVariable
4.Spring-Data-Jap
定义
JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等
设计
在pom.xml中添加依赖
⚠️不用填写版本号,SpringBoot已经为我们选择号了版本,SpringBoot的优点之一
⚠️添加完依赖记得Maven-》reimport
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
数据库操作
在application.yml配置
⚠️?characterEncoding=utf-8 解决插入数据库中文乱码问题
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://172.0.0.1:3306/luckymoney?characterEncoding=utf-8
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
创建数据库 luckymoney
略
创建表
⚠️ 不需要执行sql
⚠️@GeneratedValue 自增
1.创建Luckymoney实体类
package com.imooc.luckymoney;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.math.BigDecimal;
/**
*
* @author 背影男神
* @date 2020/7/11
*/
@Entity
public class Luckymoney {
@Id
@GeneratedValue
private Integer id;
private BigDecimal money;
/**
* 发送方
*/
private String producer;
/**
* 接收方
*/
private String consumer;
public Luckymoney(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public BigDecimal getMoney() {
return money;
}
public void setMoney(BigDecimal money) {
this.money = money;
}
public String getProducer() {
return producer;
}
public void setProducer(String producer) {
this.producer = producer;
}
public String getConsumer() {
return consumer;
}
public void setConsumer(String consumer) {
this.consumer = consumer;
}
}
2.运行后则自动创建表
功能编写
1.创建LuckymoneyRepository 接口文件
package com.imooc.luckymoney;
import org.springframework.data.jpa.repository.JpaRepository;
/**
*
* @author 背影男神
* @date 2020/7/18
*/
public interface LuckmoneyRepository extends JpaRepository<Luckymoney,Integer> {
}
2.创建LuckymoneyController.java
package com.imooc.luckymoney;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
/**
*
* @author 背影男神
* @date 2020/7/18
*/
@RestController
public class LuckymoneyController {
@Autowired
private LuckmoneyRepository repository;
/**
* 获取红包列表
*/
@GetMapping("/luckymoneys")
public List<Luckymoney> list(){
return repository.findAll();
}
/**
* 创建红包(发红包)
*/
@PostMapping("/luckymoneys")
public Luckymoney create(@RequestParam("producer") String producer, @RequestParam("money")BigDecimal money){
Luckymoney luckymoney = new Luckymoney();
luckymoney.setProducer(producer);
luckymoney.setMoney(money);
return repository.save(luckymoney);
}
/**
* 通过id查询红包
*/
@GetMapping("/luckymoneys/{id}")
public Luckymoney findById(@PathVariable("id") Integer id){
return repository.findById(id).orElse(null);
}
/**
* 更新红包
*/
@PutMapping("/luckymoneys/{id}")
public Luckymoney update(@PathVariable("id") Integer id,@RequestParam("consumer") String consumer){
Optional<Luckymoney> optional = repository.findById(id);
if(optional.isPresent()){
Luckymoney luckymoney = optional.get();
luckymoney.setId(id);
luckymoney.setConsumer(consumer);
return repository.save(luckymoney);
}
return null;
}
}
3.测试
(1)获取红包列表
(2)创建红包(发红包)
(3)通用id查询红包
(4)更新红包
5.事物管理
定义
数据库事务,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行
使用
⚠️一般存在于service方法
⚠️事务不是java方法,而是由数据库提供的,有的数据库引擎不支持事物操作。如maysql的MyISAM就不支持,innoDB就支持
1、创建service
package com.imooc.luckymoney;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
*
* @author 背影男神
* @date 2020/7/25
*/
public class LuckymoneyService {
@Autowired
private LuckmoneyRepository repository;
/**
* 发送两个红包
*/
@Transactional
public void createTwo(){
Luckymoney luckymoney1 = new Luckymoney();
luckymoney1.setProducer("发送人1");
luckymoney1.setMoney(new BigDecimal("520"));
repository.save(luckymoney1);
Luckymoney luckymoney2 = new Luckymoney();
luckymoney2.setProducer("发送人2");
luckymoney2.setMoney(new BigDecimal("1314"));
repository.save(luckymoney2);
}
}
2、在conroller写调用方法
package com.imooc.luckymoney;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
/**
*
* @author 背影男神
* @date 2020/7/18
*/
@RestController
public class LuckymoneyController {
@Autowired
private LuckmoneyRepository repository;
@Autowired
private LuckymoneyService service;
/**
* 获取红包列表
*/
@GetMapping("/luckymoneys")
public List<Luckymoney> list(){
return repository.findAll();
}
/**
* 创建红包(发红包)
*/
@PostMapping("/luckymoneys")
public Luckymoney create(@RequestParam("producer") String producer, @RequestParam("money")BigDecimal money){
Luckymoney luckymoney = new Luckymoney();
luckymoney.setProducer(producer);
luckymoney.setMoney(money);
return repository.save(luckymoney);
}
/**
* 通过id查询红包
*/
@GetMapping("/luckymoneys/{id}")
public Luckymoney findById(@PathVariable("id") Integer id){
return repository.findById(id).orElse(null);
}
/**
* 更新红包
*/
@PutMapping("/luckymoneys/{id}")
public Luckymoney update(@PathVariable("id") Integer id,@RequestParam("consumer") String consumer){
Optional<Luckymoney> optional = repository.findById(id);
if(optional.isPresent()){
Luckymoney luckymoney = optional.get();
luckymoney.setId(id);
luckymoney.setConsumer(consumer);
return repository.save(luckymoney);
}
return null;
}
/**
* 发送两个红包
*/
@PostMapping("/luckymoneys/two")
public void createTwo(){
service.createTwo();
}
}
总结
- SpringBoot介绍
- 是什么?
是新一代框架,为了简化开发过程,提升开发效率,底层还是spring
- 是什么?
- 第一个SpringBoot应用
- idea创建
- 官网创建
- 项目配置
- 单个配置@Value
- 对象配置@ConfigurationProperties
- 区域环境
- Controller的使用
- 方式
- @Controller
- @ResponseBody
- @RestController
等同于Controller+ResponseBody
- 获取参数
- @PathVariable
从url中获取 - @RequestParam
- @PathVariable
- 方式
- 数据库操作
- Spring-Data-Jpa组件
- extends JpaRepository
- save
- findByid
- findAll
- extends JpaRepository
- Spring-Data-Jpa组件
- 事务
- 特指数据库事务
- @Transactional
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117354.html