Spring Boot入门
Spring Boot入门:
使用IDEA创建Spring Boot 项目:
选择
勾选Web
生成项目结构:
例子:
package com.example.testboot;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String say(){
return "hello";
}
}
然后运行主程序:
package com.example.testboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@SpringBootApplication
public class TestbootApplication {
public static void main(String[] args) {
SpringApplication.run(TestbootApplication.class, args);
}
}
配置文件:
#端口号
server.port=8081
#项目前缀
server.context-path=/test
也可以使用yml格式配置文件:
server:
port: 8081
cotent-path: /sd
可以区分生产环境和开发环境的多环境配置。
Controller的使用:
注解:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
例如:本来应该到success.jsp页面的,则其显示success.
2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。 3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
@GetMapping({"/hello","/hi"})
@PostMapping({"/hello","/hi"})
@RequestMapping({"/hello","/hi"})
可以使用集合的方式指定多个入口@RequestMapping也可以给Controller指定
@PathVaribale 获取url中的数据
//@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)
@GetMapping("/hello/{id}")
public String sayHello(@PathVariable("id") Integer id){
return "id:"+id;
}
效果:
注意,这里
@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)
的效果等同于
@GetMapping("/hello/{id}")
同样,如果我们需要在url有多个参数需要获取,则如下代码所示来做就可以了。
@RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)
public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){
return "id:"+id+" name:"+name;
}
@RequestParam 获取请求参数的值
@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(@RequestParam("id") Integer id){
return "id:"+id;
}
//@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)
@GetMapping("/hello")
//required=false 表示url中可以不穿入id参数,此时就使用默认参数
public String sayHello(@RequestParam(value="id",required = false,defaultValue = "1") Integer id){
return "id:"+id;
}
如果是有多个参数的情况:
@GetMapping("/hello")
public String sayHello(@RequestParam("id") Integer id,@RequestParam("name") String name){
return "id:"+id+ " name:"+name;
}
@GetMapping
等同于@RequestMapping(method = RequestMethod.GET)
还有@PostMapping和@PutMapping等等
数据库操作:
配置yml文件:
server:
port: 8090
session-timeout: 30
tomcat.max-threads: 0
tomcat.uri-encoding: UTF-8
spring:
datasource:
url : jdbc:mysql://localhost:3306/mybill
username : root
password : root
driverClassName : com.mysql.jdbc.Driver
jpa:
database : MYSQL
show-sql : true
hibernate:
ddl-auto : update
naming-strategy : org.hibernate.cfg.ImprovedNamingStrategy
properties:
hibernate:
dialect : org.hibernate.dialect.MySQL5Dialect
配置实体类:
package com.example.testboot;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue
private Integer id;
private String name;
public User() {
}
public User(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
运行项目即可在数据库指定位置生成数据表。
数据库简单操作:
获取数据:
新建接口:
package com.example.testboot;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User,Integer> {
}
Controller:
package com.example.testboot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
/**
* 返回用户列表
* @return
*/
@GetMapping("/getuser")
public List<User> getUser(){
return userRepository.findAll();
}
}
添加的方法:
/**
* 添加
* @param id
* @param name
* @return
*/
@PostMapping("/getuser")
public User addUser(@RequestParam("id")Integer id,@RequestParam("name")String name){
User user=new User();
user.setId(id);
user.setName(name);
return userRepository.save(user);
}
/**
* 查询一个用户
* @param id
* @return
*/
@GetMapping("/get/{id}")
public User findUser(@PathVariable("id")Integer id){
return userRepository.findOne(id);
}
/**
* 更新一个用户
* @param id
* @param name
* @return
*/
@PutMapping("/put/{id}")
public User putUser(@PathVariable("id")Integer id,@RequestParam("name")String name){
User user=new User();
user.setId(id);
user.setName(name);
return userRepository.save(user);
}
/**
* 删除用户
* @param id
*/
@DeleteMapping("/del/{id}")
public void delUser(@PathVariable("id")Integer id){
userRepository.delete(id);
}
事务管理:
@Transactional
@DeleteMapping("/del/{id}")
public void delUser(@PathVariable("id")Integer id){
userRepository.delete(id);
}
通过注解 @Transactional
使得操作一个不完成时都不完成,除了查询方法都应添加事务。
- Docker容器学习梳理--web管理工具DockerUI部署记录
- Docker容器学习梳理-容器硬盘热扩容
- 检测到Loaderlock的问题
- 权威报告预测比特币在2018年“王位”不保
- Linux下FTP环境部署梳理(vsftpd和proftpd)
- Silverlight如何与JS相互调用
- Docker容器学习梳理--私有仓库Registry使用
- 从插件重构看如何提升测试质量与效率
- 巧用WinRAR+Javascript解决activeX的自动安装问题
- 在网页中实现QQ的屏幕截图功能
- Activity之间传递参数
- linux下rsync和tar增量备份梳理
- 重温Delphi之:面向对象
- Android新手之旅(15) Win7下配置遇到的问题
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- LeetCode | 实现strStr()
- LeetCode | 机器人能否返回原点
- LeetCode | 2 的幂
- JeeSite | Excel 导入导出
- 贪心法--哈夫曼编码
- 基于maven+ssm的增删改查之使用mybatis逆向工程生成相关文件
- Arrays 的二分查找
- (四十四)golang--协程(goroutine)和管道(channel)相结合实例
- 基于maven+ssm的增删改查之测试相关ssm环境是否成功
- 基于maven+ssm的增删改查之带分页的显示员工相关信息(基于bootstrap)
- (四十五)golang--反射
- 基于maven+ssm的增删改查之前后端之间使用json进行交互(显示员工信息)
- 动态规划--矿工挖矿
- 基于maven+ssm的增删改查之添加员工实现
- MyBatis 构造动态 SQL 语句