springboot数据库操作及事物管理操作例子
一.配置文件
pom.xml
<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
spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbgirl
username: root
password:
jpa:
hibernate:
ddl-auto: update
show-sql: true
application-dev.yml
server:
port:
girl:
cupSize: B
age:
active: dev 这句active后面的dev代码加载的是application-dev.yml这个配置.
ddl-auto: update这句ddl-auto后面是的update代表的是更新这个表,如果的create的话,代表删掉原来的表重新建表,配置完这些之后就不需要我们自己建表
,数据库会给我们建好相应的表.
二.代码
Girl.java
*/
@Entity
public class Girl { @Id
@GeneratedValue
private Integer id; @NotBlank(message = "这个字段必传")
private String cupSize; @Min(value = , message = "未成年少女禁止入门")
// @NotNull
// @Max()
// @Length()
private Integer age; @NotNull(message = "金额必传")
private Double money; public Girl() {
} 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;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public Double getMoney() {
return money;
} public void setMoney(Double money) {
this.money = money;
}
}
程序是的入口
GirlApplication.java
@SpringBootApplication
public class GirlApplication { public static void main(String[] args) {
SpringApplication.run(GirlApplication.class, args);
}
}
GirlProperties.java
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperties { private String cupSize; private Integer age; public String getCupSize() {
return cupSize;
} public void setCupSize(String cupSize) {
this.cupSize = cupSize;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}
GirlController.java
@RestController
public class GirlController { @Autowired
private GirlRepository girlRepository; @Autowired
private GirlService girlService; /**
* 查询所有女生列表
* @return
*/
@GetMapping(value = "/girls")
public List<Girl> girlList() {
return girlRepository.findAll();
} /**
* 添加一个女生
*
* @return
*/
@PostMapping(value = "/girls")
public Girl girlAdd(@Valid Girl girl, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
System.out.println(bindingResult.getFieldError().getDefaultMessage());
return null;
} girl.setCupSize(girl.getCupSize());
girl.setAge(girl.getAge()); return girlRepository.save(girl);
} //查询一个女生
@GetMapping(value = "/girls/{id}")
public Girl girlFindOne(@PathVariable("id") Integer id) {
return girlRepository.findOne(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);
} //删除
@DeleteMapping(value = "/girls/{id}")
public void girlDelete(@PathVariable("id") Integer id) {
girlRepository.delete(id);
} //通过年龄查询女生列表
@GetMapping(value = "/girls/age/{age}")
public List<Girl> girlListByAge(@PathVariable("age") Integer age) {
return girlRepository.findByAge(age);
} @PostMapping(value = "/girls/two")
public void girlTwo() {
girlService.insertTwo();
}
}
最上面添加女生,这个是通过传入Gril这个参数,通过点出get方法来获取对应的属性值,推荐这个写法.
GirlRepository .java
public interface GirlRepository extends JpaRepository<Girl, Integer> { //通过年龄来查询
public List<Girl> findByAge(Integer age);
}
GirlService.java
@Service
public class GirlService { @Autowired
private GirlRepository girlRepository; @Transactional
public void insertTwo() {
Girl girlA = new Girl();
girlA.setCupSize("A");
girlA.setAge();
girlRepository.save(girlA); Girl girlB = new Girl();
girlB.setCupSize("BBBB");
girlB.setAge();
girlRepository.save(girlB);
}
}
GirlService.java这个类是用来测试事物管理.
在这个类的某个方法上加上@Transactional这个注解说明这个方法就已经交由springboot事物管理.有事物管理和没有事物管理的区别是:
有事物管理这个方法内有一个操作失败,如这个类的插入操作,有一个插入失败,这个方法内的操作全部失败.
如果没有事物就只有失败的那一个操作失败.
一般用于同时操作多条数据,只有查询的时候不加事物.
springboot数据库操作及事物管理操作例子的更多相关文章
- SpringBoot02 Controller的使用、数据库操作、事物管理、修改banner
1 Controller的使用 特点:编程技巧和SpringMVC几乎完全一样 注意:@RestController = @Controller + @ResponseBody 注意:读取路径参数和请 ...
- Redis数据库之数据基本管理操作
了解并掌握各种数据类型的命令操作方式,以及各种数据类型值的操作方式.同时,熟练记忆列表.哈希.集合和有序集合等数据类型的常用操作命令.能根据指令格式完成相应的指令操作. ①string数据类型的练习 ...
- springBoot的事物管理
springBoot的事物管理 1:springBoot 整合单数据源事物: Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务 ...
- SpringBoot事物管理器
一.springboot整合事物管理 springboot默认集成事物,只主要在方法上加上@Transactional即可 二.SpringBoot分布式事物管理 使用springboot+jta+a ...
- k8spod资源的基础管理操作
pod是k8s api中的核心资源类型,它可以定义在json或yaml格式的资源清单中,由资源管理命令进行陈述式或声明式管理.创建时,用户可通过create或apply命令将请求提交到apiserve ...
- Spring学习之声明式事物管理
public List<Student> selectStudent() { Student s = new Student(); s.setName("zhengbin&quo ...
- MySQL事物管理
sql语句对数据库操作构成事物. 事物的特性:ACID •Atomicity(原子性):一个事物要么全都被执行,要么全都不执行,不会存在执行结束在中间环节.如果事物在执行过程中发生异常,则会回滚到事物 ...
- SpringBoot使用WebFlux响应式编程操作数据库
这一篇文章介绍SpringBoot使用WebFlux响应式编程操作MongoDb数据库. 前言 在之前一篇简单介绍了WebFlux响应式编程的操作,我们在来看一下下图,可以看到,在目前的Spring ...
- (四)SQL入门 数据库的操作与事务管理
数据库的操作,有三个最基本的语句,insert插入,update修改,delete删除. 不同的数据库厂商的实现可能不同,所以就不说具体的语法怎么写的了.说语法也没有意义,到处都可以复制粘贴,记得听某 ...
随机推荐
- Keras学习-1
本文基于http://keras-cn.readthedocs.io/en/latest/for_beginners/concepts/提及的知识总结,感谢作者做出的贡献,如有侵权将立即删除 符号计算 ...
- [转发]SPRING MVC3.2案例讲解--SPRING MVC3的@ResponseBody和ResponseEntity
在传统的开发过程中,我们的控制CONTROLL层通常需要转向一个JSP视图:但随着WEB2.0相关技术的崛起,我们很多时候只需要返回数据即可,而不是一个JSP页面. SPRING MVC3的@Resp ...
- python将图片转化为字符图
最近看到将图片转化为字符图的小实验,我觉得很有趣,所以决定自己实现一下. 步骤和原理如下: 读取图片的灰度值矩阵(0-255之间),灰度值矩阵主要反映的是图片的黑白程度,越黑越接近与0,越白越接近于2 ...
- kubenetes 应用更新
一.Deployment类型: 1.更新: 1).命令方式更新镜像: kubectl set image deployment nginx-deployment nginx=nginx:1.9.1 k ...
- Kafka(一)
1.安装zookeeper集群 2.下载kafka wget http://mirror.bit.edu.cn/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz 配 ...
- 3.1.7. Cross validation of time series data
3.1.7. Cross validation of time series data Time series data is characterised by the correlation bet ...
- 20145316许心远《Java学习笔记》第三周总结
20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...
- [User Defaults] Failed to read values in CFPrefsPlistSource (iOS 10)
最近遇到一个bug,偶发,后来发现概率还挺高(10%). NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; ...
- Android利用方向传感器获得手机的相对角度实例说明
http://www.jb51.net/article/37710.htm 1.android 的坐标系是如何定义x, y z 轴的 x轴的方向是沿着屏幕的水平方向从左向右,如果手机不是正方形的话,较 ...
- 337APuzzles
dangerous /*大水题目.不解释 给你m个数,从中选出n个,保证最大值和最小值的差值最小, 做法:从小到大排序,然后暴力枚举每个长度是n的序列*/ #include<stdio.h> ...