SpringBoot Data整合JPA
JPA简介
一、什么是JPA
JPA是一套Java官方制定的ORM 方案,是Java的一个规范 。Spring Data JPA是对基于 JPA 的数据访问层的增强支持。应用JPA的主流框架:Hibernate (JBoos)、EclipseTop(Eclipse社区)、OpenJPA (Apache基金会)
二、为什么使用JPA
JPA优点
- 简单易用,帮助开发者提供了生产率
- 便于维护,减低了维护成本
- 学习成本相对比较低。
jPA存在的缺点:
-
将语言与数据库混在一起,导致数据改动以后,配置文件必须更新
-
对与多数据与大数据量处理很容易产生性能问题。
-
过度封装,导致错误查找相对与JDBC等传统开发技术而言更加困难
三、JPA和JDBC的对比
- 相同处:
1.都跟数据库操作有关,JPA 是JDBC 的升华,升级版。
2.JDBC和JPA都是一组规范接口
3.都是由SUN官方推出的 - 不同处:
1.JDBC是由各个关系型数据库实现的, JPA 是由ORM框架实现
2.JDBC 使用SQL语句和数据库通信。 JPA用面向对象方式, 通过ORM框架来生成SQL,进行操作。
3.JPA在JDBC之上的, JPA也要依赖JDBC才能操作数据库。
四、JPA常用注解
入门案例演示
1、首先通过工具新建springbootjpa工程(步骤省略,此处需要勾选spring Web,springdata jpa,lombok,mysql四个依赖)
2、等待工程创建成功,把application.properties文件改为application.yml。然后刷新maven依赖如下图所示
3、接着配置yml文件。
#jpa配置
spring:
jpa:
hibernate:
#自动生成数据库表(关键)
ddl-auto: update
show-sql: true
# mysql数据库连接配置
datasource:
url: jdbc:mysql://localhost:3306/springbootjpa?useUnicode=true&characterEncoding=utf-8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Hongkong&zeroDateTimeBehavior=convertToNull
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
# 默认关闭Thymeleaf的缓存
thymeleaf:
cache: false
# 端口号
server:
port: 8086
4、在com.zpark文件夹下创建entity文件夹,在该文件夹中创建实体类User,用于映射数据库表,代码如下
package com.zpark.entiry;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* @Title: User
* @Author Charles
* @Package com.zpark.entiry
* @Date 2022/10/14 15:46
*/
@Entity
@Data
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false,unique = true,length = 20)
private String username;
@Column(nullable = false,length = 20)
private String password;
@Column(nullable = false)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date regdates;
}
5、创建好User实体类之后,在mysql中新建数据库,命名为springbootjpa,不用建表,运行项目后会自动生成表。
6、在com.zpark文件下创建repository文件夹,在该文件夹下创建名为UserRepository的接口类,继承JpaRespository<User,Long>接口。在接口类上添加注解@Repository,表示包含,增删改查功能的接口。
到这里,关于jpa的依赖导入和配置基本完成。这里自带很多内置的增删改查方法,不用我们自己学sql语句直接调用就行。
7、在com.zpark下创建新的文件夹命名为controller,在controller文件夹中创建UserController类,在类上添加@Restcontroller注解,用来进行jpa测试。
这里我写了三个方法,分别是查找,添加,和删除,在此之前我们要手动添加几条数据在user表中
package com.zpark.controller;
import com.zpark.entiry.User;
import com.zpark.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.websocket.server.PathParam;
import java.util.List;
/**
* @Title: UserController
* @Author Charles
* @Package com.zpark.controller
* @Date 2022/10/14 19:03
*/
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
//查找所有user对象
@GetMapping("/all")
public List<User> findAll() {
List<User> userList = userRepository.findAll();
return userList;
}
//添加User对象
@RequestMapping ("/add")
public void add(User user) {
userRepository.save(user);
}
//删除User对象
@RequestMapping("/del")
public void deleted(@PathParam("id") Long id) {
userRepository.deleteById(id);
}
}
添加效果图(在地址栏输入此地址:localhost:8086/add?id=6&username=小组长&password=1844812®dates=2021-08-19 02:33:15)
查找效果图
删除效果图
源码附上:链接:https://pan.baidu.com/s/1S76-kJy5ahsxpQNW8LBGdg?pwd=a2dr
提取码:a2dr
码字不易,点点关注,谢谢!