示例 使用CrudRepository接口访问数据

创建一个新的Maven项目,命名为crudrepositorytest。按照Maven项目的规范,在src/main/下新建一个名为resources的Folder。

(1) 修改pom.xml文件。

在pom.xml文件中增加web开发的启动器配置如下:

<dependency>

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

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

</dependency>

然后添加数据库驱动依赖配置:

<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

Spring Boot的数据访问:CrudRepository接口的使用的更多相关文章

  1. (8)Spring Boot 与数据访问

    文章目录 简介 整合基本的JDBC与数据源 整合 druid 数据源 整合 mybatis 简介 对于数据访问层,无论是 SQL 还是 NOSQL ,Spring Boot 默认都采用整合 Sprin ...

  2. Spring Boot的数据访问 之Spring Boot + jpa的demo

    1. 快速地创建一个项目,pom中选择如下 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  3. Spring Boot框架 - 数据访问 - 整合Mybatis

    一.新建Spring Boot项目 注意:创建的时候勾选Mybatis依赖,pom文件如下 <dependency> <groupId>org.mybatis.spring.b ...

  4. Spring Boot实现数据访问计数器

    1.数据访问计数器   在Spring Boot项目中,有时需要数据访问计数器.大致有下列三种情形: 1)纯计数:如登录的密码错误计数,超过门限N次,则表示计数器满,此时可进行下一步处理,如锁定该账户 ...

  5. Spring Boot框架 - 数据访问 - JDBC&自动配置

    一.新建Spring Boot 工程 特殊勾选数据库相关两个依赖 Mysql Driver — 数据库驱动 Spring Data JDBC 二.配置文件application.properties ...

  6. Spring MVC或Spring Boot配置默认访问页面不生效?

    相信在开发项目过程中,设置默认访问页面应该都用过.但是有时候设置了却不起作用.你知道是什么原因吗?今天就来说说我遇到的问题. 首先说说配置默认访问页面有哪几种方式. 1.tomcat配置默认访问页面 ...

  7. Spring Boot启动过程及回调接口汇总

    Spring Boot启动过程及回调接口汇总 链接: https://www.itcodemonkey.com/article/1431.html 来自:chanjarster (Daniel Qia ...

  8. Spring boot未授权访问造成的数据库外联

    一.spring boot 日常测试或攻防演练中像shiro,fastjson等漏洞已经越来越少了,但是随着spring boot框架的广泛使用,spring boot带来的安全问题也越来越多,本文仅 ...

  9. spring boot使用swagger生成api接口文档

    前言 在之前的文章中,使用mybatis-plus生成了对应的包,在此基础上,我们针对项目的api接口,添加swagger配置和注解,生成swagger接口文档 具体可以查看本站spring boot ...

随机推荐

  1. go 依赖工具glide

    添加gopath/bin目录到环境变量下 安装glide $ go get github.com/Masterminds/glide $ go install github.com/Mastermin ...

  2. 测试常用的sql语句总结

    测试中常用的sql语句,排名部分先后 1. 查询 SELECT * FROM 表名称 SELECT COUNT(DISTINCT column_name) FROM table_name 指定列的不同 ...

  3. HDU 3848 CC On The Tree(树形dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=3848 题意: 求一棵树上两个叶子结点之间的最短距离. 思路: 两个叶子节点之间一定会经过非叶子节点,除非只有两个 ...

  4. maven springMVC SSM框架中 出现的406 (Not Acceptable)

    首先,需要清楚,http state 406代表什么意思: 406是HTTP协议状态码的一种,表示无法使用请求的特性来响应请求的网页.一般指客户端浏览器不接受所请求页面的MIME类型. 出现这样的错误 ...

  5. hibernate事务规范写法

    @Test public void testTx() { SessionFactory sessionFactory = null; Session session = null; Transacti ...

  6. 使用pipeline减少与redis交互次数

    1.redis_pipeline=redis_cli.pipeline() 2.redis_pipeline.setex()此语句可写多条 3.redis_pipeline.execute() # # ...

  7. lua中产生 1 - n 之间不重复随机数

    local function GetRandomNumList(len) local rsList = {} ,len do table.insert(rsList,i) end local num, ...

  8. 注册表的作用、bat文件中REG ADD命令添加注册表项以及bat

    注册表的用途与设置 注册表是windows的核心,里面储存着大量的系统信息,说白了就是一个庞大的数据库.如果你不懂什么是数据库,那没关系,不影响你了解注册表,不过最好对数据库有所了解.注册表里面所有的 ...

  9. 数据结构(C语言版)-第8章 排序

    8.1 概述 1. 什么是排序?  将一组杂乱无章的数据按一定规律顺次排列起来. 2. 排序的目的是什么? ——便于查找! 3. 什么叫内部排序?什么叫外部排序? 若待排序记录都在内存中,称为内部排序 ...

  10. ubuntu 下Visual Studio Code 安装

    Build in Visual Studio Code Install VSCode The easiest way to install for Debian/Ubuntu based distri ...