学习springBoot 数据的增删改查(三)

使用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 方式请求后台添加两条数据,测试结果为失败

数据库也没有添加上两条数据,所以这个失败的例子反应出我们的事务管理成功了

猜你喜欢

转载自blog.csdn.net/qq_36908872/article/details/83020031