Spring Boot使用Spring JPA操做

概念

什麼是JPA

  • JPA(Java Persistence API)是Sun官方提出的Java持久化規範。它爲Java開發人員提供了一種對象/關係映射工具來管理Java應用中的關係數據。
  • JPA經過JDK5.0註解或者XML描述對象 - 關係表的映射關係,並將運行期的實體對象持久化到數據庫中。
  • 持久化(Persistence),即把數據保存到可永久保存的存儲設備中,如磁盤。持久化的主要應用是將內存中的對象存儲在數據庫中,或者存儲在磁盤文件中、XML數據文件中等...

什麼是Spring Data

  • Spring Data是一個用於簡化數據庫訪問,並支持雲服務的開源框架。其主要目的是使用數據庫訪問變得方便快捷,並支持MapReduce框架和雲計算數據服務。它還支持基於關係型數據庫的數據服務,如Oracle RAC等。對於擁有海量數據的項目,可使用Spring Data來簡化項目的開發,就如Spring Framework對JDBC、ORM的支持同樣,Spring Data會讓數據的訪問變得更加方便。

什麼是Spring Data JPA

  • Spring Data JPA:能夠簡化JPA的寫法,能夠在不用寫實現的狀況下,實現對數據的訪問和操做。除了CRUD(Create、Retrieve、Update、Delete)外,還包括分頁、排序等一些經常使用的功能。
  • 咱們清楚的是Spring Data是一個開源框架,在這個框架中Spring Data JPA只是這個框架中的一個模塊,因此名稱才叫Spring Data JPA。若是單獨使用JPA開發,會發現這個代碼量和使用JDBC開發同樣有點煩人,因此Spring Data JPA的出現就爲了簡化JPA的寫法,讓你只須要編寫一個接口繼承一個類就能實現CRUD操做了。

 

配置Spring JPA

修改pom.xml配置文件

<!-- 添加MySQL數據庫驅動依賴包 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 添加spring-data-jpa依賴包 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

application.properties文件加入配置

#指定MySql數據庫鏈接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.diverClassName=com.mysql.jdbc.Driver
spring.datasource.max-active==20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

#配置spring JPA信息
spring.jpa.database=MYSQL
#控制檯是否打印SQL信息
spring.jpa.show-sql=true
#當執行DDL語句時,是建立仍是更新仍是刪除等...create、update、drop-create
spring.jpa.hibernate.ddl-auto=update
#持久化命名策略,當建立一個實體類,會在相應的數據庫中新增一張該實體類對應的數據庫表結構
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

建立實體類

package com.cori.demo.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * 建立一個用戶實體類
 * 
 * 使用@Entity進行實體類持久化操做,當JPA檢測到實體類當中有@Entity註解時,則會在數據庫中生成該類對應的表結構性信息,
 * 如屬性爲駝峯命名法,則對應生成的表字段爲,如:userId -> user_id(可本身定義); 
 * 使用@Id指定主鍵
 * 
 * @author Administrator
 *
 */
@Entity
public class UserBean {
	/**
	 * @Id指定主鍵
	 * @GeneratedValue(strategy=GenerationType.AUTO) 指定主鍵的生成策略,MySQL爲自動增加
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer userId;

	private String userName;

	private Integer userAge;

	private Integer userSex;

	private String idCard;

	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public Integer getUserAge() {
		return userAge;
	}

	public void setUserAge(Integer userAge) {
		this.userAge = userAge;
	}

	public Integer getUserSex() {
		return userSex;
	}

	public void setUserSex(Integer userSex) {
		this.userSex = userSex;
	}

	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}
}

建立實體類以後,這一步啓動服務,而後進入MySQL數據庫中查看,能夠看到對應的user_bean表結構已經建立好了。java

 

建立接口

  • 建立接口繼承CrudRepository
package com.cori.demo.Repository;

import org.springframework.data.repository.CrudRepository;

import com.cori.demo.bean.UserBean;

public interface UserRepository extends CrudRepository<UserBean, Integer>{
	
	
}

 

建立Service

package com.cori.demo.service;

import javax.annotation.Resource;
import javax.transaction.Transactional;
import org.springframework.stereotype.Service;
import com.cori.demo.Repository.UserRepository;
import com.cori.demo.bean.UserBean;

@Service
public class UserService {

	@Resource
	private UserRepository userRepository;

	//新增記錄
	@Transactional
	public void save(UserBean bean) {
		userRepository.save(bean);
	}

	//刪除記錄
	@Transactional
	public void delete(int id) {
		userRepository.delete(id);
	}
	
	//查詢記錄
	public Iterable<UserBean> findAll() {
		return userRepository.findAll();
	}
}

 

建立Controller

package com.cori.demo.controller;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.cori.demo.bean.UserBean;
import com.cori.demo.service.UserService;

@RestController
@RequestMapping("/user")
public class UserController {

	@Resource
	private UserService userService;

	@RequestMapping("/save")
	public String save() {
		UserBean bean = new UserBean();
		bean.setUserName("張三");
		bean.setUserAge(28);
		bean.setUserSex(0);
		bean.setIdCard("123456789123456789");
		userService.save(bean);
		return "ok";
	}

	@RequestMapping("/delete")
	public String delete() {
		userService.delete(1);
		return "ok";
	}
	
	@RequestMapping("/getAll")
	public Iterable<UserBean> findAll(){
		return userService.findAll();
	}
}

到這裏已經實現了簡單的增刪查功能了,能夠啓動服務進行測試了。mysql

 

總結

  1. 須要在POM.xml文件中添加相應的依賴包;
  2. 須要在application.properties配置文件中添加配置信息;
  3. 須要建立實體類,好比:User;
  4. 須要建立接口類並繼承CrudRepository;
  5. 須要建立Service類;
  6. 須要建立Controller類;
  7. 測試;
相關文章
相關標籤/搜索