SpringBoot系列之Spring Data Jpa集成教程

Spring Data Jpa是属于Spring Data的一个子项目,Spring data项目是一款集成了很多数据操作的项目,其下的子项目有如下图所示:



官方也有提供了英文版的文档,具体可以参考Spring data官方文档

JPA是一个规范,并非具体的实现框架,而Spring Data JPA就是依赖于Hibernate JPA的实现

ok,接着通过例子的方式介绍Springboot集成Spring Data JPA的方法,进行实验,要先创建一个Initializer工程,如图:





新建项目后,会自动加上如下配置,,如果你的mysql服务器是5.7版本的,建议指定mysql-connector-java版本,Druid也需要自己加上,pom配置参考:

<properties>
<java.version>1.8</java.version>
<druid.version>1.1.2</druid.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
<scope>runtime</scope>
</dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

新建数据库和数据表:

CREATE DATABASE /*!32312 IF NOT EXISTS*/`springboot` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `springboot`;

/*Table structure for table `sys_user` */

DROP TABLE IF EXISTS `sys_user`;

CREATE TABLE `sys_user` (
`userId` int(10) NOT NULL,
`username` varchar(20) NOT NULL,
`sex` char(10) DEFAULT NULL,
`password` varchar(10) DEFAULT NULL,
PRIMARY KEY (`userId`),
UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*Data for the table `sys_user` */ insert into `sys_user`(`userId`,`username`,`sex`,`password`) values (1,'admin','man','11');

新建一个bean类,代码:

package com.example.springboot.jpa.entity;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import javax.persistence.*;

@Entity
@Table(name = "sys_user")
//Springboot2.2.1集成的Spring data jpa比较新,需要加上如下配置
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class User{ @Id //主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
private Integer userId; @Column(name = "username",length = 20) //这是和数据表对应的一个列
private String username; @Column
private String sex; @Column
private String password; 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 String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

实现JpaRepository接口,当然Spring data jpa还提供了很多接口,具体可以参考我之前博客:JPA系列之Spring Data JPA系列之入门教程,本博客只介绍在Springboot集成spring data jpa,具体使用还是需要看我之前博客,才可以再来学习本文

package com.example.springboot.jpa.repository;

import com.example.springboot.jpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User,Integer> { }

不写Service类,直接写个controller类进行测试

package com.example.springboot.jpa.controller;

import com.example.springboot.jpa.entity.User;
import com.example.springboot.jpa.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController; @RestController
public class UserController { @Autowired
UserRepository userRepository; @GetMapping("/user/{userId}")
public User getUser(@PathVariable("userId") Integer userId){
User user = userRepository.getOne(userId);
return user;
} @GetMapping("/user")
public User insertUser(User user){
User save = userRepository.save(user);
return save;
} }

application.yml配置,当然还要配置数据库JDBC和连接池,具体参考我的博客:SpringBoot系列之集成Druid配置数据源监控,yaml不熟悉可以,参考我之前博客:SpringBoot系列之YAML配置用法学习笔记

spring:
jpa:
hibernate:
# 更新或者创建数据表结构
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# 控制台显示SQL
show-sql: true

启动Postman来调试接口,测试通过:

代码例子下载:github下载链接

最新文章

  1. 【练习】数据移动---导出(EXPDP)
  2. 那些年我们写过的T-SQL(上篇)
  3. pytessact 出现Error2错误
  4. Xcode与OX 版本对照表
  5. ADF_ADF Faces系列6_ADF数据可视化组件简介之建立Thematic Map Component
  6. JAVA WEB中如何让数据库连接对开发人员完全透明?
  7. JS基础DOM篇之一:何为DOM?
  8. SQLite 入门教程(二)创建、修改、删除表 (转)
  9. Hibernate一对一双向关联(外键)
  10. 关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
  11. (转)如何将ecshop首页主广告位的flash轮播替换为js轮播
  12. 分页:T-SQL存储过程和EF存储过程的使用
  13. VB.net结束进程
  14. 正确实现用spring扫描自定义的annotation
  15. vm tools安装linux ubuntu和主机不能复制
  16. [py][mx]xadmin注册切换主题功能和网站名称修改
  17. LuoguP1126 机器人搬重物(BFS)
  18. 斜率优化DP学习笔记
  19. TextRank in Python
  20. 关于Hall定理的学习

热门文章

  1. [ISE调试] 在ISE调试过程中,遇到过的error以及消除办法
  2. 给大家整理了几个开源免费的 Spring Boot + Vue 学习资料
  3. mysql 创建用户及授权(2)
  4. celery 启用worker ValueError: not enough values to unpack
  5. AutoCad 二次开发 文字镜像
  6. Ubuntu改坏sudoers后无法使用sudo的解决办法
  7. toString() 方法的参数
  8. 2019-9-10:渗透测试,基础学习,nmap扫描命令,php基本语法学习,笔记
  9. Oracle 分区表管理之组合分区(分区索引失效与性能比较)
  10. day 35 协程 IO多路复用