2小时快速上手Spring Boot (廖师兄-imooc)

具备前置知识:

前置知识
1、利用maven构建项目

《项目管理利器maven》 http://www.imooc.com/learn/443

2、Spring注解

《Spring入门篇》http://www.imooc.com/learn/196

3、RESTful API

不需要去学SpringMVC


第一个SpringBoot程序

#### 三种运行方式

第一种: idea run在这里插入图片描述
第二种 mvn spring-boot:run
在这里插入图片描述
第三种 mvn clean package
在这里插入图片描述
java -jar target/luckeymoney-0.0.1-SNAPSHOT.jar在这里插入图片描述

自定义属性配置

数据库配置
在这里插入图片描述
修改端口 访问路径
server.port=8081
server.servlet.context-path=/luckymoney
application.yml 与 application.properties 配置是一模一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全局 变量配置
minMoney
调用方法
@Value("${minMoney}")
private BigDecimal minMoney;
在这里插入图片描述
在这里插入图片描述

minMoney: 1
description: 最少需要发1元
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
变量 如何在配置中使用
minMoney: 2
description: 最少需要发${minMoney}元
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上面都是 单个配置

下面是 配置类

limit:
minMoney: 2
maxMoney: 9999
description: 最少要发${limit.minMoney}元,最多${limit.maxMoney}元
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

开发环境 与 生产环境 分配
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
mvn运行
mvn clean package
java -jar -Dspring.profiles.active=prod target/luckeymoney-0.0.1-SNAPSHOT.jar
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 配置总结 ###
@Value
@Component
@ConfigurationProperties

### 多环境配置 ###

Controller

一、 @Controller 处理http请求
二、 @RestController Spring4之后新加的注解,原来返回json 需要@ResponseBody配合@Controller
三、@RequestMapping 配置url映射

模板渲染 thymeleaf 现在比较少用了,采用前后端分离技术

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@PathVariable 获取url中的数据
在这里插入图片描述
在这里插入图片描述
@RequestParam 获取请求参数的值

在这里插入图片描述
带默认值:0 如下,
在这里插入图片描述
在这里插入图片描述

spring-data-jpa

JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实行这一规范的产品有hibernate,TopLink等
在这里插入图片描述
安装依赖 spring-data-jpa 与mysql 依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

配置连接数据库 mysql


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/luckymoney?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

在这里插入图片描述
创建一个实体类 Luckymoney
数据库中会自动生成相应的表 luckymoney

import javax.persistence.Entity;

类名  @Entity 注解

id 自增长

import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Id
@GeneratedValue
private Integer id;

创建一个空对象

public Luckymoney() {
}

代码如下:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.math.BigDecimal;

@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;
    }
}

创建一个spring-data-jpa接口,继承相应的JpaRepository 的所有方法
传入两个参数 一个 实体类名,实体类名的 id
代码如下:

import org.springframework.data.jpa.repository.JpaRepository;

public interface LuckymoneyRepository extends JpaRepository <Luckymoney,Integer>{
}

创建一个Service 类,专门处理 数据库相应方法

@Service
public class LuckymoneyService {

    @Autowired
    private LuckymoneyRepository repository;

    /*
    * Transactional
    * 事务 指数据库事务,不是java事务
    * MyISAM 数据库引擎是不支持事务的
    * InnoDB 数据库引擎 支持事务
    *
    * 举例:扣库存 -> 创建订单
    * */
    @Transactional
    public void  createTwo(){
        Luckymoney luckymoney1 = new Luckymoney();
        luckymoney1.setProducer("梁德强");
        luckymoney1.setMoney(new BigDecimal("520"));
        repository.save(luckymoney1);

        Luckymoney luckymoney2 = new Luckymoney();
        luckymoney2.setProducer("梁德强");
        luckymoney2.setMoney(new BigDecimal("1314"));
        repository.save(luckymoney2);
    }
}

创建一个Controller类:LuckymoneyController,处理相应的http请求的方法,并返回API数据

继承JpaRepository 的接口类 LuckymoneyRepository调用方法如下

@Autowired
private LuckymoneyRepository repository;

	一、
	Luckymoney luckymoney = new Luckymoney();
	luckymoney.setProducer(producer);
	luckymoney.setMoney(money);
	return  repository.save(luckymoney);

	二、
	return repository.findById(id).orElse(null);

	三、返回的是一个Optional对象 里面的值都是数据库返回的根据当前的id查询的值
	Optional<Luckymoney> optional = repository.findById(id);
	```
	Optional<Luckymoney> optional = repository.findById(id);
    if (optional.isPresent()){ //如果有内容 ,执行更新操作
        Luckymoney luckymoney = optional.get();
        luckymoney.setConsumer(consumer);
        return repository.save(luckymoney);
    }
    return null;
	```
	

封装处理数据库的相应方法,Service的 类LuckymoneyService 调用方法如下:

@Autowired
private LuckymoneyService service;
一、
@PostMapping("/luckymoney/two")
public void createTwo(){
    service.createTwo();

}

在这里插入图片描述

事务管理

数据库事务:是指为 单个逻辑工作单元 执行的一系列操作, 要么完全执行, 要么完全地不执行

事务管理,指的是数据库事务 ,不是java事务

MyISAM 数据库引擎不支持事务

InnoDB数据库引擎支持事务

事务管理一般是放置 Service类的里面

如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

 @Transactional
 public void  createTwo(){
     Luckymoney luckymoney1 = new Luckymoney();
     luckymoney1.setProducer("梁德强");
     luckymoney1.setMoney(new BigDecimal("520"));
     repository.save(luckymoney1);

     Luckymoney luckymoney2 = new Luckymoney();
     luckymoney2.setProducer("梁德强");
     luckymoney2.setMoney(new BigDecimal("1314"));
     repository.save(luckymoney2);
 }

代码如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;

@Service
public class LuckymoneyService {

    @Autowired
    private LuckymoneyRepository repository;

    /*
    * Transactional
    * 事务 指数据库事务,不是java事务
    * MyISAM 数据库引擎是不支持事务的
    * InnoDB 数据库引擎 支持事务
    *
    * 举例:扣库存 -> 创建订单
    * */
    @Transactional
    public void  createTwo(){
        Luckymoney luckymoney1 = new Luckymoney();
        luckymoney1.setProducer("梁德强");
        luckymoney1.setMoney(new BigDecimal("520"));
        repository.save(luckymoney1);

        Luckymoney luckymoney2 = new Luckymoney();
        luckymoney2.setProducer("梁德强");
        luckymoney2.setMoney(new BigDecimal("1314"));
        repository.save(luckymoney2);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值