使用springBoot连接数据库对数据做增删改查的操作,要先下载一个postman后面测试的时候要使用。
postman使用和下载连接
https://mp.csdn.net/postedit/83154623
项目当中pom.xml 文件当中要引入jap 与 mysql的关联jar
<!-- 引入jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 引入mysql数据库需要用的jar -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
完整的pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zhang</groupId>
<artifactId>springBootTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springBootTest</name>
<description>Demo project for String Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporing.outputEncoding>UTF-8</project.reporing.outputEncoding>
<!-- 指定一下jdk版本 1.8 默认是1.6-->
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 不屏蔽掉springboot自带的tomcat -->
<!-- <exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions> -->
</dependency>
<!-- 引入 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 引入jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 引入mysql数据库需要用的jar -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<finalName>springBootTest</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
配置好了pom.xml文件后
之前项目中的application.properties文件也是要重新配置上连接的数据库连接与驱动,数据库的账号与密码
application.properties 配置文件 (提示 dbgirl是测试用的数据库名称,使用的是mysql数据库)
spring.profiles.active=dev
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbgirl?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=u04
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
然后在创建girl实体类,让项目启动的时候自动生成我们所需要的表
Girl 实体类
package com.zhang;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 女孩实体类
* @author Administrator
*
*/
@Entity //这个注解 就是表示 当前实体类与数据库中的一个表对应
public class Girl {
@Id
@GeneratedValue
private Integer eid;
private String cupSize;
private Integer age;
public Girl() {
}
public Integer getEid() {
return eid;
}
public void setEid(Integer eid) {
this.eid = eid;
}
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;
}
}
在新建一个接口,让其继承jpa类,(我们要用 jpa 来操作数据库的数据,简化我们写sql步骤)
GirlRepository 接口
package com.zhang;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
public interface GirlRepository extends JpaRepository<Girl, Integer> {
//通过年龄来查询
public List<Girl> findByAge(Integer age);
}
GirlService 类 (用于测试事务管理的 service 类)
package com.zhang;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 事务管理类
* @author Administrator
*
*/
@Service
public class GirlService {
@Autowired GirlRepository girlRepository ;
public void insertTwo(){
Girl girlA = new Girl();
girlA.setCupSize("A");
girlA.setAge(15);
girlRepository.save(girlA);
Girl girlB = new Girl();
girlB.setCupSize("B");
girlB.setAge(19);
girlRepository.save(girlB);
}
}
最后我们把增删改查的方法全部都写在GirlController 类中,方便于调用
GirlController 类
package com.zhang;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GirlController {
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlService girlService;
/**
* 查询girl对象集合
* @return
*/
@GetMapping(value="/girls")
public List<Girl> girlLsit(){
return girlRepository.findAll();
}
/**
* 新增一个女孩
*/
@PostMapping(value="/girlsAdd")
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);
}
/**
* 查询一个女生
*/
@GetMapping(value = "/girls/{id}")
public Girl girlFindOne(@PathVariable("id") Integer id){
return girlRepository.findOne(id);
}
/**
* 更新女生数据
*/
@PutMapping(value="/girls/{id}")
public void girlUpdate(@PathVariable("id") Integer id ,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Girl girl = new Girl();
girl.setEid(id);
girl.setCupSize(cupSize);
girl.setAge(age);
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();
}
}
方法写好之后我们就可以把项目跑起来,然后去测试。测试的时候要注意我们后台写的是用GET方式获取的时候我们在
Postman上也要改成相对应的方式,不然就会报错
mysql数据库中新增几条数据测试查询方法使用
Postman上 我们用GET 方式请求后台获取到一个女生集合,测试结果成功
Postman上 我们用POST请求后台获取到一个女生集合,测试结果成功
数据库添加上一条数据
Postman上 我们用GET 方式请求后台获取到一个女生对象,测试结果成功
Postman上 我们用PUT 方式请求后台修改一个女生对象,修改 eid =1的数据 为age:13 cupSize : D,测试结果成功
数据库修改后的结果
Postman上 我们用DELETE 方式请求后台删除 eid = 3 的 女生对象数据,测试结果成功
数据库数据
Postman上 我们用GET 方式请求后台获取到 age = 13 的 女生对象,测试结果成功
Postman上 我们用POST 方式请求后台添加两条数据,测试结果成功
(事务控制 要么一起成功,要么一起失败)
添加成功
修改一下数据库,故意让数据添加失败 , 来测试事务管理是否成功
把girl表结果cupSize长度改为1,然后cupSize添加多长度这样就会报错
同时GirlService 类也要修改,添加@Transactional //事务的注解 把其中一个添加对象的cupSize加长 让其报错
都修改好之后, 删除掉数据刚才 添加的两条数据 这样让回滚的事件 展示更清楚些 , 重新启动项目测试
Postman上 我们用POST 方式请求后台添加两条数据,测试结果为失败
数据库也没有添加上两条数据,所以这个失败的例子反应出我们的事务管理成功了