初始化好工程之后

入门

新建一个HelloController.java

package com.example.girl1;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@RequestMapping(value = "/girl",method = RequestMethod.GET)public String say(){return "1111111";}
}复制代码

在浏览器中输入localhost:8080/girl 内容就是1111111

启动方式

1. idea直接启动

2. mvn

  • mvn spring-boot:run

3. 打包成jar包启动

  • mvn install
  • cd target
  • java -jar jar包名

项目属性配置

resource 目录下 将application.xxx修改成application.yml

server:port: 8080servlet:context-path: /first
复制代码

之后访问就得 :http://localhost:8080/first/girl

配置文件属性的使用

server:port: 8080
cupSize: A复制代码

HelloController.java中

@RestController
public class HelloController {// 通过注解把配置文件中的cupSize注入到变量中@Value("${cupSize}")private String cupSize;@RequestMapping(value = "/girl",method = RequestMethod.GET)public String say(){return cupSize;}
}
复制代码

打开浏览器就能看到cupSize了

属性多的时候就加个前缀来区分

新建一个类 GirlProperties.java

package com.example.girl1;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;// 获取前缀是girl的配置
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperties {private  String cupSize;private  Integer age;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getCupSize() {return cupSize;}public void setCupSize(String cupSize) {this.cupSize = cupSize;}
}复制代码

配置文件

server:port: 8080
girl:cupSize: Aage: 18
复制代码

HelloController

@RestController
public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = "/girl",method = RequestMethod.GET)public Integer say(){return girlProperties.getAge();}
}
复制代码

这样就能做到用前缀来区分,自己打开浏览器看看就明白了

配置的开发环境和生产环境

  • application.yml
// application.ymlspring:profiles:active: dev
复制代码
  • application-dev.yml
server:port: 8080
girl:cupSize: Bage: 18复制代码
  • application-prod.yml
server:port: 8081
girl:cupSize: Aage: 20复制代码
  • 可以在idea中启动开发环境,
  • 在mvn install 后生成的jar包启动开发环境
java -jar jar包名 --spring.profiles.active=prod
复制代码

Controller的使用

  • @Controller 处理http请求
  • @RestController Spring4之后新加的注解,原来返回json需要@RequestBody配合@Controller(RestController相当于这两个的组合RequestBody和Controller)
  • @RequestMapping 配置url映射

@RequestMapping

// 如果想访问两个
@RequestMapping(value = {"/girl","/hello"},method = RequestMethod.GET)
复制代码
// 可以给类加,访问就得 :localhost:8080/hello/girl了
@RestController
@RequestMapping("/hello")
public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl"},method = RequestMethod.GET)public Integer say(){return girlProperties.getAge();}
}
// RequestMethod方式有很多
可以使用postman来测试api
复制代码

处理url里面的参数

  • @PathVariable 获取url里面的数据
  • @RequestParam 获取请求参数的值
  • @GetMapping 组合注解

@PathVariable

@RestController
public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl/{id}"},method = RequestMethod.GET)public Integer say(@PathVariable("id") Integer myId){return myId;}
}
// localhost:8080/girl/100
复制代码

@RequestParam

//localhost:8080/girl?id=100
@RestController
public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl"},method = RequestMethod.GET)public Integer say(@RequestParam("id") Integer myId){return myId;}
}
// 另一种写法
@RestController
public class HelloController {@Autowiredprivate GirlProperties girlProperties;@RequestMapping(value = {"/girl"},method = RequestMethod.GET)// 默认值和是否必须传入public Integer say(@RequestParam(value = "id",required = false,defaultValue = "10") Integer myId){return myId;}
}
// RequestMapping 可以写成GetMapping
复制代码

数据库操作

在pom.xml导入包

// 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>
复制代码

结束后导入一下包

配置文件的配置

// 运行前先新建一个dbgirl的数据库,utf8mb4
// application.yml
spring:profiles:active: devdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/dbgirlusername: rootpassword: 123456jpa:hibernate:ddl-auto: update // create会把之前的表删掉在新建一个show-sql: true
复制代码

新建一个Girl类

package com.example.girl1;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
// 这个注解表示这个类就是对应数据库中的表
@Entity
public class Girl {@Id@GeneratedValueprivate Integer id;private String cupSize;private Integer age;public Girl() {}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getCupSize() {return cupSize;}public void setCupSize(String cupSize) {this.cupSize = cupSize;}
}
// 之后表中的那些字段就是girl类中对应过去的
复制代码

接口编写

get    /girls    获取女生列表post    /girls    创建一个女生get    /girls/id   通过id查询一个女生put    /girls/id    通过id更新一个女生delete    /girls/id    通过id删除一个女生
复制代码

获取女生列表

新建一个GirlRepository.java的接口

package com.example.girl1;import org.springframework.data.jpa.repository.JpaRepository;// Girl类名,Integer是id的类型
public interface GirlRepository extends JpaRepository<Girl,Integer> {}复制代码

新建GirlController.java

package com.example.girl1;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
@RestController
public class GirlController {@Autowiredprivate GirlRepository girlRepository;/** 查询女生列表* */@GetMapping(value = "/girls")public List<Girl> girlList(){return girlRepository.findAll();}
}
// 使用postman测试
复制代码

创建一个女生

 /** 新增一个女生* */@PostMapping(value = "/girls")public Girl girlAdd(@RequestParam("cupSize") String cupSize,@RequestParam("age") Integer age){Girl girl = new Girl();girl.setCupSize(cupSize);girl.setAge(age);return  girlRepository.save(girl);}
复制代码

通过id查询一个女生

 // 查询一个女生@GetMapping(value = "/girls/{id}")public Girl girlFindOne(@PathVariable("id") Integer id){return  girlRepository.findById(id).orElse(null);}
复制代码

通过id更新一个女生

  // 更新@PutMapping(value = "/girls/{id}")public Girl  girlUpdate(@PathVariable("id") Integer id,@RequestParam("cupSize") String cupSize,@RequestParam("age") Integer age){Girl girl = new Girl();girl.setId(id);girl.setCupSize(cupSize);girl.setAge(age);return girlRepository.save(girl);}
复制代码

通过id删除一个女生

 // 删除@DeleteMapping(value = "/girls/{id}")public  void  girlDelete(@PathVariable("id") Integer id){girlRepository.deleteById(id);}
复制代码

通过年龄查询女生列表

 // 通过年龄查询女生列表@GetMapping(value = "/girls/age/{age}")public List<Girl> girlListByAge(@PathVariable("age") Integer age){return  girlRepository.findByAge(age);}
复制代码

GirlRepository.java中

package com.first.first;import org.springframework.data.jpa.repository.JpaRepository;import java.util.List;public interface GirlRepository extends JpaRepository<Girl,Integer> {// 通过年龄查询public List<Girl> findByAge(Integer age);
}复制代码

事务管理

需求是如果我有两条数据,一条插入失败的话另一条就不能插入,这时候需要加一个事务

GirlService.java

package com.example.girl1;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;@Service
public class GirlService {@Autowiredprivate GirlRepository girlRepository;@Transactionalpublic void insertTwo(){Girl girlA= new Girl();girlA.setAge(10);girlA.setCupSize("B");girlRepository.save(girlA);Girl girlB= new Girl();girlA.setAge(11);girlA.setCupSize("F");girlRepository.save(girlB);}
}// 在Girlcontroller里新增@Autowiredprivate GirlService girlService;@PostMapping(value = "/girls/two")public void girlTwo(){girlService.insertTwo();}复制代码

spring-boot两小时入门笔记相关推荐

  1. Spring Boot 热部署入门

    转载自  Spring Boot 热部署入门 1. 概述 在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果.如果在项目小时,重启速度比较快,等待的时间是较短的.但是随着项 ...

  2. Spring Boot的快速入门

    Spring Boot的快速入门 1.导入第一个maven项目 自动生成maven项目 2.了解maven项目结构 3.启动服务 和普通maven项目结构是一样的,值得注意的是,启动服务的入口是 ![ ...

  3. mysql入门到跑路_MySQL 24小时入门笔记(3),插入和删除,删库到跑路

    MySQL 24小时入门笔记 插入 INSERT INSERT用法非常简单.现在我们有表students如下. 列名 类型 约束 id int primary key name char(16) NO ...

  4. Spring Boot 2.x 入门前的准备-IntelliJ IDEA 开发工具的安装与使用

    ntelliJ IDEA 开发工具的安装与使用 1 下载 IntelliJ IDEA 2 破解版本安装 2.1 window 下的破解 2018.3.1最新版破解 2.2 window 下的破解 20 ...

  5. 入职必备两小时入门SVN(二)

    入职必备两小时入门SVN(二) 1.SVN使用 1.创建版本库 打开SVN服务端(开始菜单) 右击Repository.点击Create Repository,出现下面画面,选择默认就好 2.导入项目 ...

  6. 入职必备两小时入门SVN(一)

    入职必备两小时入门SVN(一) 1.简介 SVN的全称是Subversion,即版本控制系统.它是最流行的一个开放源代码的版本控制系统.作为一个开源的版本控制系统,Subversion管理着随时间改变 ...

  7. 第64节:Java中的Spring Boot 2.0简介笔记

    Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...

  8. 2018年最新Spring Boot视频教程附代码笔记资料(50G)

    1. Spring Boot  项目实战 ----- 技术栈博客企业前后端 链接:https://pan.baidu.com/s/1hueViq4 密码:4ma8 2.Spring Boot  项目实 ...

  9. Spring Boot Vue Element入门实战(完结)

    最近给朋友做一个大学运动会管理系统,用作教学案例,正好自己也在自学VUE,决定用spring boot vue做一个简单的系统.vue这个前端框架很火,他和传统的Jquery 编程思路完全不一样,Jq ...

最新文章

  1. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产
  2. vscode 搭建Linux 内核开发环境
  3. 状态压缩 HDU 1565
  4. 基于tomcat集群做session共享
  5. DHCP 服务原理:Snooping和Relay
  6. RabbitMQ (一) MQ介绍以Linux下RabbitMq环境安装
  7. 查询商品列表报错This application has no explicit mapping for /error, so you are seeing this as a fallback
  8. 计算机导论声明型摆设,《计算机导论作业-论文排档》.doc
  9. application.properties文件配置详解(核心属性和Web属性) ——Spring Boot配置
  10. vue-cli脚手架npm run build打包后图片路径问题 2018.11.21
  11. win7 mysql zip包如何安装_MySql 5.7.31 win7 Zip压缩包配置教程
  12. DB2 8.2 9.1 9.5 9.7 下载地址(原创)
  13. 财智理财7破解思路与总结
  14. 蚂蚁金服揭”老底“:港版支付宝的区块链跨境汇款与Ripple、Circle大不同
  15. 读《拆掉思维的墙》小记
  16. 互联网众筹系统开发-一站式搭建众筹项目建设
  17. 微信公众号模板消息推送(PHP)
  18. sudo与su的区别
  19. 什么是MySQL数据库?应用环境有哪些?
  20. 宽带共享常见经典问题(转)

热门文章

  1. 渗透测试web未设置http头 Strict Transport Security
  2. MySQL给新建用户并赋予权限
  3. 记一道面试题:STL两个栈实现一个队列。
  4. spring 3.x 学习笔记_spring mvc、spring jdbc 实现网站的登录注册功能
  5. UIBackgroundTaskIdentifier 进入后台后结束任务再挂起APP
  6. 如何执行字符串的PHP代码
  7. 通讯录数据表设计v0.5
  8. bzoj 3594: [Scoi2014]方伯伯的玉米田
  9. 自制基于HMM的python中文分词器
  10. windows下面使用nssm设置新的服务实现开机自启等