电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Spring Boot2.x集成JPA快速開發的示例代碼

瀏覽:102日期:2023-09-04 17:10:24

什么是JPA

一種規范,并非ORM框架,也就是ORM上統一的規范

spring-boot-starter-data-jpa 是Spring Boot的項目,包含了spring-data-jpa和一些其他依賴用于Spring Boot項目 spring-data-jpa 是Spring Data的項目,就是本體,用于任何項目

解決

為了執行簡單查詢分頁,編寫太多重復代碼 基于JPA的數據訪問層的增強支持

用了之后可以做什么,為什么要用?如下代碼解釋

實體類

package com.example.springredis.entity;import lombok.Data;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import java.io.Serializable;@Entity@Datapublic class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; private String account; private String pwd;}

dao層

@Repositorypublic interface UserDao extends JpaRepository<User, Long> {}

測試類

@Autowired private UserDao userDao; public void findAllTest() { System.out.println(userDao.findAll().toString()); }

上面的操作已經完成了一個查詢全部,相信不用在做多余的解釋了

JPA優點:主要就是簡單易用,集成方便,可以不用寫SQL語句

準備工作

JDK 1.8 以上 IDEA 2020.3 Gradle 5+ 或者 Maven 3.5+ 在 https://start.spring.io/ 初始化一個項目

Spring Boot2.x集成JPA快速開發的示例代碼

這里使用的是Maven,下載之后請在IDEA導入項目

項目結構圖

Spring Boot2.x集成JPA快速開發的示例代碼

先看pom.xml配置

國外依賴下載慢,更換阿里源

<?xml version='1.0' encoding='UTF-8'?><project xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://maven.apache.org/POM/4.0.0' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>springboot-jpa</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-jpa</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.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>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <!--阿里云主倉庫,代理了maven central和jcenter倉庫--> <repository> <id>aliyun</id> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> <releases><enabled>true</enabled> </releases> <snapshots><enabled>false</enabled> </snapshots> </repository> <!--阿里云代理Spring 官方倉庫--> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://maven.aliyun.com/repository/spring</url> <releases><enabled>true</enabled> </releases> <snapshots><enabled>false</enabled> </snapshots> </repository> </repositories></project>

定義一個實體對象 SysUser.java

package com.example.demo.model;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Data@NoArgsConstructor@AllArgsConstructor@Entity(name = 'sys_user')public class SysUser { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String email; private String username; private String password; public SysUser(String email, String username, String password) { this.email = email; this.username = username; this.password = password; }} 這里有一個 **SysUser** 類, @NoArgsConstructor 默認構造函數僅為JPA而存在。 另一個構造函數是您將用于創建要保存到數據庫的user實例的構造函數。 在類上加 @Entity 注解,表示這個是一個 JPA 的實體,如果在類上沒有加 @Table 注解,表明該實體將映射到名為 sys_user 的表,如果要加上,可以在其 name 屬性里寫入表名,如: @Table(name = 't_user') id 屬性使用 @Id 注釋,以便JPA將其識別為對象的ID. @GeneratedValue(strategy = GenerationType.AUTO) 自增長ID策略

創建一個 UserRepository.java 接口

這里很簡單,直接繼承核心接口 JpaRepository

package com.example.demo.repository;import com.example.demo.model.SysUser;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface UserRepository extends JpaRepository<SysUser, Long> {}

Spring Boot2.x集成JPA快速開發的示例代碼

配置文件application.yml

修改application.properties 為 application.yml

src/main/resources/application.yml

spring: datasource: driverClassName: org.h2.Driver password: root url: jdbc:h2:mem:demodb:file:data/demo username: root jpa: open-in-view: true database-platform: org.hibernate.dialect.H2Dialect # spring.jpa.show-sql=true 配置在日志中打印出執行的 SQL 語句信息。 show-sql: true # 配置指明在程序啟動的時候要刪除并且創建實體類對應的表。 # create 這個參數很危險,因為他會把對應的表刪除掉然后重建。所以千萬不要在生成環境中使用。只有在測試環境中,一開始初始化數據庫結構的時候才能使用一次。 # ddl-auto:create----每次運行該程序,沒有表格會新建表格,表內有數據會清空 # ddl-auto:create-drop----每次程序結束的時候會清空表 # ddl-auto:update----每次運行程序,沒有表格會新建表格,表內有數據不會清空,只會更新(推薦) # ddl-auto:validate----運行程序會校驗數據與數據庫的字段類型是否相同,不同會報錯 hibernate.ddl-auto: update

h2數據庫

在resources 文件夾下新建 data.sql

data.sql

DROP TABLE IF EXISTS sys_user;CREATE TABLE sys_user( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(250) DEFAULT NULL, username VARCHAR(250) NOT NULL, password VARCHAR(250) NOT NULL);

測試類進行測試 SpringbootJpaApplicationTests.java

package com.example.demo;import com.example.demo.model.SysUser;import com.example.demo.repository.UserRepository;import lombok.extern.slf4j.Slf4j;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@Slf4j@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringbootJpaApplicationTests { @Autowired private UserRepository userRepository; @Before public void add() { userRepository.save(new SysUser('123@qq.com', 'root', 'root')); } @Test public void contextLoads() { System.out.println(userRepository.findAll().toString()); } //修改操作 @After public void update() { // ifPresent 如果存在值,則使用值調用指定的使用者,否則不執行任何操作。 userRepository.findById(1L).ifPresent(user -> { user.setUsername('馬華云騰'); userRepository.save(user); System.out.println(user.toString()); }); } //刪除 @After public void del() { userRepository.findById(2L).ifPresent(user -> userRepository.delete(user)); }}

測試輸出

Spring Boot2.x集成JPA快速開發的示例代碼

常見異常

如果出現下列等錯誤:

Error:(41, 13) java: 找不到符號符號: 方法 setName(java.lang.String)位置: 類型為com.example.springbootjpademo.entity.User的變量 user

請注意下面的設置是否正確:

Spring Boot2.x集成JPA快速開發的示例代碼

RestClient API 測試

Spring Boot2.x集成JPA快速開發的示例代碼

### 新增1POST http://localhost:8080/user/addContent-Type: application/json{ 'email': 'eyck@aws.com', 'username': 'root', 'password': 'root'}### 新增2POST http://localhost:8080/user/addContent-Type: application/json{'email': 'ekko@aws.com','username': 'ekko','password': 'ekko'}### 修改PUT http://localhost:8080/user/updateContent-Type: application/json{ 'id': 1, 'email': 'eyck@aws.com', 'username': 'root', 'password': 'root'}### 獲取所有GET http://localhost:8080/user/allAccept: */*Cache-Control: no-cache### 刪除PUT http://localhost:8080/user/del/2### 獲取所有GET http://localhost:8080/user/allAccept: */*Cache-Control: no-cache

左上角 Run all ...

測試結果....

Spring Boot2.x集成JPA快速開發的示例代碼

代碼地址

https://github.com/Gleans/spring-boot/tree/master/springboot-jpa

到此這篇關于Spring Boot2.x集成JPA快速開發的文章就介紹到這了,更多相關Spring Boot2.x集成JPA快速開發內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 上海心叶港澳台联考一对一培训_上海心叶港澳台联考,港澳台联考一对一升学指导 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | 收录网| 真空乳化机-灌装封尾机-首页-温州精灌 | 烘干设备-热泵烘干机_广东雄贵能源设备有限公司| 球盟会·(中国)官方网站| 商秀—企业短视频代运营_抖音企业号托管 | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 东莞工作服_东莞工作服定制_工衣订做_东莞厂服 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 涂层测厚仪_光泽度仪_uv能量计_紫外辐照计_太阳膜测试仪_透光率仪-林上科技 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 校车_校车价格_19座幼儿园校车_幼儿园校车_大鼻子校车 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 定制/定做冲锋衣厂家/公司-订做/订制冲锋衣价格/费用-北京圣达信 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 微型实验室真空泵-无油干式真空泵-微型涡旋耐腐蚀压缩机-思科涡旋科技(杭州)有限公司 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 |