Spring Boot的數據訪問:CrudRepository接口的使用

示例 使用CrudRepository接口訪問數據html

建立一個新的Maven項目,命名爲crudrepositorytest。按照Maven項目的規範,在src/main/下新建一個名爲resources的Folder。java

(1) 修改pom.xml文件。mysql

在pom.xml文件中增長web開發的啓動器配置以下:web

<dependency>spring

<groupId>org.springframework.boot</groupId>sql

<artifactId>spring-boot-starter-web</artifactId>數據庫

</dependency>apache

而後添加數據庫驅動依賴配置:json

<dependency>瀏覽器

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

最後須要加spring-boot-starter-data-jpa,它是Spring Boot項目訪問數據庫的核心依賴配置,加入此配置後,系統會自動導入Spring Data相關的核心數據訪問接口包,以及Hibernate框架相關的依賴包,該配置以下:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

修改後的完整pom.xml文件以下:

程序清單:codes/04/crudreposotorytest/pom.xml

<projectxmlns="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>org.fkit</groupId>

<artifactId>crudreposotorytest</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>crudreposotorytest</name>

<url>http://maven.apache.org</url>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.6.RELEASE</version>

</parent>

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- 指定一下jdk的版本 ,這裏咱們使用jdk 1.8 ->

<java.version>1.8</java.version>

</properties>

<dependencies>

<!-- spring-boot-starter-web: MVC,AOP的依賴包.... -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<!-- <version></version> 因爲咱們在上面指定了 parent(spring boot) -->

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

</dependencies>

</project>

</project>

Java

(2) 配置基本屬性

在src/main/resources包下新建一個全局配置文件,命名爲application.properties,在該配置文件中配置數據源和jpa相關的屬性:

程序清單:codes/04/crudreposotorytest/src/main/resources/application.properties

########################################################

### 數據源信息配置

########################################################

# 數據庫地址

spring.datasource.url = jdbc:mysql://localhost:3306/springdatajpa

# 用戶名

spring.datasource.username = root

# 密碼

spring.datasource.password =

# 數據庫驅動

spring.datasource.driverClassName = com.mysql.jdbc.Driver

# 指定鏈接池中最大的活躍鏈接數.

spring.datasource.max-active=20

# 指定鏈接池最大的空閒鏈接數量.

spring.datasource.max-idle=8

# 指定必須保持鏈接的最小值

spring.datasource.min-idle=8

# 指定啓動鏈接池時,初始創建的鏈接數量

spring.datasource.initial-size=10

########################################################

### JPA持久化配置

########################################################

# 指定數據庫的類型

spring.jpa.database = MYSQL

# 指定是否須要在日誌中顯示sql語句

spring.jpa.show-sql = true

# 指定自動建立|更新|驗證數據庫表結構等配置,配置成update

# 表示若是數據庫中存在持久化類對應的表就不建立,不存在就建立對應的表

spring.jpa.hibernate.ddl-auto = update

# Naming strategy

# 指定命名策略

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

# 指定數據庫方言

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

Java

(3) 建立持久化類

在org.fkit.crudreposotorytest包下新建四個包,依次是bean(放置持久化類的)、controller(控制器)、repository(定義數據訪問接口的包)、service(業務邏輯處理類),在bean包建立一個持久化了類User.java其代碼以下:

程序清單:codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/bean/User.java

package org.fkit.crudreposotorytest.bean;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

@Entity

// 用於標記持久化類,Spring Boot項目加載後會自動根據持久化類建表

public class User{

/**

* 使用@Id指定主鍵. 使用代碼@GeneratedValue(strategy=GenerationType.AUTO)

* 指定主鍵的生成策略,mysql默認的是自增加。

*

*/

@Id

@GeneratedValue(strategy =GenerationType.AUTO)

private int id;// 主鍵.

private String userName;// 姓名. cat_name

private String loginName;

private char sex;// 性別

private int age;// 年齡

public int getId(){

return id;

}

public void setId(int id){

this.id = id;

}

public String getUserName(){

return userName;

}

public void setUserName(String userName){

this.userName = userName;

}

public String getLoginName(){

return loginName;

}

public void setLoginName(String loginName){

this.loginName = loginName;

}

public char getSex(){

return sex;

}

public void setSex(char sex){

this.sex = sex;

}

public int getAge(){

return age;

}

public void setAge(int age){

this.age = age;

}

}

Java

(4) 定義數據訪問層接口

在org.fkit.crudreposotorytest.repository包下新建一個接口命名爲UserRepository,讓該接口繼承CrudRepository接口,以持久化對象User做爲CrudRepository的第一個類型參數,表示當前所操做的持久化對象類型,Integer做爲CrudRepository的第二個類型參數,用於指定ID類型,完整代碼結構以下:

程序清單:

codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/repository/UserRepository.java

package org.fkit.crudreposotorytest.repository;

import org.fkit.crudreposotorytest.bean.User;

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<User,Integer>{

}

在Spring Boot項目中數據訪問層無需提供實現,直接繼承數據訪問接口便可。

(5) 定義業務層類

程序清單:codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/service/UserService.javapackage org.fkit.crudreposotorytest.service;

import javax.annotation.Resource;

import javax.transaction.Transactional;

import org.fkit.crudreposotorytest.bean.User;

import org.fkit.crudreposotorytest.repository.UserRepository;

import org.springframework.stereotype.Service;

@Service

public class UserService{

@Resource

private UserRepository userRepository;

/**

* save,update ,delete 方法須要綁定事務. 使用@Transactional進行事務的綁定.

*

* @param User

* 保存對象

*/

@Transactional

public void save(User User){

userRepository.save(

User);

}

/**

* 根據id刪除對象

*

* @param id

*/

@Transactional

public void delete(int id){

userRepository.delete(id);

}

/**

* 查詢數據

*

* @return

*/

public Iterable<User> getAll(){

return userRepository.findAll();

}

/**

* 修改用戶對象數據

*

* @param user

*/

@Transactional

public void update(User user){

// 先根據要修改的對象id查詢出對應的持久化對象

User sessionUser = userRepository.findOne(user.getId());

// 直接調用持久化對象的set方法修改對象的數據

sessionUser.setUserName(user.getUserName());

sessionUser.setLoginName(user.getLoginName());

}

}

在業務層中須要注入數據訪問層對象,在上述代碼中咱們是經過@Resources註解將UserRepository接口對應的實現類注入進來的,從這裏能夠看出,只要數據訪問層接口實現了CrudReposity,Spring Boot項目會自動掃描該類併爲該類建立實現類對象。@Transactional註解用於申明方法的事物特性。

Java

(6) 定義控制器類

在org.fkit.crudreposotorytest.controller包先新建一個控制器類命名爲UserController,其代碼以下:

程序清單:codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/controller/UserController.javapackage org.fkit.crudreposotorytest.controller;

import javax.annotation.Resource;

import org.fkit.crudreposotorytest.bean.User;

import org.fkit.crudreposotorytest.service.UserService;

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

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

@RestController

@RequestMapping("/user")

public class UserController{

@Resource

private UserService userService;

@RequestMapping("/save")

public String save(){

User user =newUser();

user.setLoginName("dlei");

user.setUserName("徐磊");

user.setSex('男');

user.setAge(3);

userService.save(user);

return"保存數據成功!";

}

@RequestMapping("/update")

public String update(){

User user =new User();

user.setId(1);

user.setUserName("孫悟空");

user.setLoginName("swk");

userService.update(user);

return"修改爲功!";

}

@RequestMapping

("/delete")

public String delete(){

userService.delete(1);

return"刪除數據成功!";

}

@RequestMapping("/getAll")

public Iterable<User> getAll(){

// 查詢全部的用戶數據

return userService.getAll

();

}

}

Java

(7)測試應用

啓動Mysql數據庫,在數據庫中建立名稱爲springdatajpa的數據庫,執行腳本以下:

CREATE DATABASE springdatajpa;

而後在org.fkit.crudreposotorytest包下新建App.java啓動類,App.java和以前的項目一致,此處再也不贅述。右鍵該類運行main方法。Spring Boot項目啓動後,先去數據庫查看是否成功自動建立了user表,而後在瀏覽器輸入URL來測試應用。

http://127.0.0.1:8080/user/save

請求會提交到UserController類的save方法進行處理,若是該方法執行保存用戶成功便可返回字符串「保存用戶成功!」,以下圖所示:

圖4.1 保存數據

查看數據庫的表信息以下:

Java

圖4.2 保存數據後的表信息

Java

測試修改用戶,在瀏覽器中輸入以下地址:

http://127.0.0.1:8080/user/update

請求會提交到UserController類的update方法進行處理,若是該方法執行修改用戶成功便可返回字符串「修改爲功」,以下圖所示:

Java

圖4.3 修改用戶

Java

查看數據庫的表信息以下:

圖4.4 修改數據後的表信息

測試查詢全部用戶數據,在瀏覽器中輸入:

http://127.0.0.1:8080/user/getAll

請求會提交到UserController類的getAll方法進行處理,若是該方法執行查詢全部用戶成功便可返查詢到的全部用戶信息的json字符串格式,以下圖所示:

Java

圖4.5 查詢全部用戶數據

測試刪除用戶數據,在瀏覽器中輸入:

http://127.0.0.1:8080/user/delete

請求會提交到UserController類的delete方法進行處理,以下圖所示:

Java

圖4.6 刪除用戶信息

查看數據庫的表信息以下:

Java

以上所述是小編給你們介紹的Spring Boot的數據訪問:CrudRepository接口的使用,但願對你們有所幫助,若是你們有任何疑問請給我留言,小編會及時回覆你們的!

Java學習資料獲取(複製下段鏈接至瀏覽器便可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

 
參考 https://blog.csdn.net/qiangcuo6087/article/details/79137234
相關文章
相關標籤/搜索