示例 使用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==