spring-boot两小时入门笔记
初始化好工程之后
入门
新建一个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两小时入门笔记相关推荐
- Spring Boot 热部署入门
转载自 Spring Boot 热部署入门 1. 概述 在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果.如果在项目小时,重启速度比较快,等待的时间是较短的.但是随着项 ...
- Spring Boot的快速入门
Spring Boot的快速入门 1.导入第一个maven项目 自动生成maven项目 2.了解maven项目结构 3.启动服务 和普通maven项目结构是一样的,值得注意的是,启动服务的入口是 ![ ...
- mysql入门到跑路_MySQL 24小时入门笔记(3),插入和删除,删库到跑路
MySQL 24小时入门笔记 插入 INSERT INSERT用法非常简单.现在我们有表students如下. 列名 类型 约束 id int primary key name char(16) NO ...
- Spring Boot 2.x 入门前的准备-IntelliJ IDEA 开发工具的安装与使用
ntelliJ IDEA 开发工具的安装与使用 1 下载 IntelliJ IDEA 2 破解版本安装 2.1 window 下的破解 2018.3.1最新版破解 2.2 window 下的破解 20 ...
- 入职必备两小时入门SVN(二)
入职必备两小时入门SVN(二) 1.SVN使用 1.创建版本库 打开SVN服务端(开始菜单) 右击Repository.点击Create Repository,出现下面画面,选择默认就好 2.导入项目 ...
- 入职必备两小时入门SVN(一)
入职必备两小时入门SVN(一) 1.简介 SVN的全称是Subversion,即版本控制系统.它是最流行的一个开放源代码的版本控制系统.作为一个开源的版本控制系统,Subversion管理着随时间改变 ...
- 第64节:Java中的Spring Boot 2.0简介笔记
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...
- 2018年最新Spring Boot视频教程附代码笔记资料(50G)
1. Spring Boot 项目实战 ----- 技术栈博客企业前后端 链接:https://pan.baidu.com/s/1hueViq4 密码:4ma8 2.Spring Boot 项目实 ...
- Spring Boot Vue Element入门实战(完结)
最近给朋友做一个大学运动会管理系统,用作教学案例,正好自己也在自学VUE,决定用spring boot vue做一个简单的系统.vue这个前端框架很火,他和传统的Jquery 编程思路完全不一样,Jq ...
最新文章
- 技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产
- vscode 搭建Linux 内核开发环境
- 状态压缩 HDU 1565
- 基于tomcat集群做session共享
- DHCP 服务原理:Snooping和Relay
- RabbitMQ (一) MQ介绍以Linux下RabbitMq环境安装
- 查询商品列表报错This application has no explicit mapping for /error, so you are seeing this as a fallback
- 计算机导论声明型摆设,《计算机导论作业-论文排档》.doc
- application.properties文件配置详解(核心属性和Web属性) ——Spring Boot配置
- vue-cli脚手架npm run build打包后图片路径问题 2018.11.21
- win7 mysql zip包如何安装_MySql 5.7.31 win7 Zip压缩包配置教程
- DB2 8.2 9.1 9.5 9.7 下载地址(原创)
- 财智理财7破解思路与总结
- 蚂蚁金服揭”老底“:港版支付宝的区块链跨境汇款与Ripple、Circle大不同
- 读《拆掉思维的墙》小记
- 互联网众筹系统开发-一站式搭建众筹项目建设
- 微信公众号模板消息推送(PHP)
- sudo与su的区别
- 什么是MySQL数据库?应用环境有哪些?
- 宽带共享常见经典问题(转)
热门文章
- 渗透测试web未设置http头 Strict Transport Security
- MySQL给新建用户并赋予权限
- 记一道面试题:STL两个栈实现一个队列。
- spring 3.x 学习笔记_spring mvc、spring jdbc 实现网站的登录注册功能
- UIBackgroundTaskIdentifier 进入后台后结束任务再挂起APP
- 如何执行字符串的PHP代码
- 通讯录数据表设计v0.5
- bzoj 3594: [Scoi2014]方伯伯的玉米田
- 自制基于HMM的python中文分词器
- windows下面使用nssm设置新的服务实现开机自启等