springboot数据库操作及事物管理操作例子

时间:2023-03-10 05:28:18
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事物管理.有事物管理和没有事物管理的区别是:
有事物管理这个方法内有一个操作失败,如这个类的插入操作,有一个插入失败,这个方法内的操作全部失败.
如果没有事物就只有失败的那一个操作失败.
一般用于同时操作多条数据,只有查询的时候不加事物.