SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法
添加依賴
在pom文件中添加如下依賴
<!--添加Jpa依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--數(shù)據(jù)庫鏈接驅(qū)動(dòng)-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>配置數(shù)據(jù)庫連接
在application.yml中添加數(shù)據(jù)庫連接配置
# 應(yīng)用服務(wù) WEB 訪問端口
server:
port: 8080
# 應(yīng)用名稱
spring:
application:
name: HelloSpringBoot
#數(shù)據(jù)庫配置連接
datasource:
url: jdbc:mysql://127.0.0.1:3306/hello_jpa?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: "123456"
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
show-sql: true配置上數(shù)據(jù)庫的連接地址和賬號(hào)密碼
url: jdbc:mysql://127.0.0.1:3306/hello_jpa??useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
數(shù)據(jù)庫連接地址
127.0.0.1表示本地
3306數(shù)據(jù)庫端口號(hào)
hello_jpa數(shù)據(jù)庫名稱
useUnicode=true&characterEncoding=utf-8配置數(shù)據(jù)庫連接使用UTF8編碼
serverTimezone=Asia/Shanghai配置時(shí)間為北京時(shí)間
username 配置數(shù)據(jù)庫名稱 root
password 配置數(shù)據(jù)庫密碼 123456
driver-class-name 配置mysql的驅(qū)動(dòng) com.mysql.cj.jdbc.Driver
show-sql配置控制臺(tái)是否打印訪問數(shù)據(jù)庫時(shí)的sql語句,配置為true,顯示sql語句,方便調(diào)試。
啟動(dòng)項(xiàng)目,看到如下信息,表示數(shù)據(jù)庫連接成功,如果顯示錯(cuò)誤,請(qǐng)查驗(yàn)是否數(shù)據(jù)庫連接信息有錯(cuò)誤。

創(chuàng)建測(cè)試數(shù)據(jù)庫表
CREATE TABLE `jpa_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵', `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶名稱', `age` tinyint(4) NULL DEFAULT NULL COMMENT '年齡', `gender` tinyint(4) NULL DEFAULT NULL COMMENT '性別0女 1男', `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手機(jī)號(hào)', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
Java代碼部分
建實(shí)體類和Repository
jpa_user表對(duì)應(yīng)實(shí)體類User
//引入lombok的getset注解,也可以不引入,自己寫下面字段的對(duì)應(yīng)getset方法
@Getter
@Setter
//注解此類為實(shí)體類
@Entity
//關(guān)聯(lián)數(shù)據(jù)庫表的名稱
@Table(name = "jpa_user")
public class User {
//聲明屬性為主鍵
@Id
//指定主鍵生成策略
@GeneratedValue(strategy = GenerationType.IDENTITY)
// @Column注解,設(shè)置屬性關(guān)聯(lián)的數(shù)據(jù)庫表字段
// 注意:如果屬性名和表字段名相同,可以不設(shè)置,比如這個(gè)實(shí)體類對(duì)應(yīng)的所有字段就都是與數(shù)據(jù)庫表字段相同的,都可以不設(shè)置Column注解
@Column(name = "id")
private Long id;
@Column(name = "username")
private String username;
@Column(name = "age")
private Integer age;
@Column(name = "gender")
private Integer gender;
@Column(name = "phone")
private String phone;
//駝峰命名法和數(shù)據(jù)庫中的下劃線字段是對(duì)應(yīng)的
@Column(name = "access_card_number")
private String accessCardNumber;
}創(chuàng)建UserRepository,數(shù)據(jù)庫操作類
public interface UserRepository extends JpaRepository<User, Long> {
}是的,這個(gè)接口沒有定義方法,只要繼承JpaRepository就可以,<User, Long>分別對(duì)應(yīng)的要連接的實(shí)體類和主鍵類型。
JpaRepository內(nèi)置好了基本的增刪查改接口及排序和分頁功能。
做個(gè)簡(jiǎn)單的代碼測(cè)試
往數(shù)據(jù)庫中插入數(shù)據(jù)
//insert into jpa_user (access_card_number, age, gender, phone, username) values (?, ?, ?, ?, ?)
User user = new User();
user.setUsername("test");
user.setPhone("13112345678");
user.setAge(18);
user.setGender(0);
user.setAccessCardNumber("ic_001");
userRepository.save(user);根據(jù)主鍵id查找數(shù)據(jù)
//select * from jpa_user user where user.id=?
User user = userRepository.findById(id).orElse(null);修改id為1的數(shù)據(jù)
//update jpa_user set access_card_number=?, age=?, gender=?, phone=?, username=? where id=?
User user = userRepository.findById(1L).orElse(null);
user.setPhone("13212345678");
userRepository.save(user);刪除id為1的數(shù)據(jù)
//update jpa_user set access_card_number=?, age=?, gender=?, phone=?, username=? where id=?
User user = userRepository.findById(1L).orElse(null);
user.setPhone("13212345678");
userRepository.save(user);where語句與查找數(shù)據(jù)
在UserRepository中定義一個(gè)方法
//select * from jpa_user user where (user.age between ? and ?) and user.gender=? List<User> findByAgeBetweenAndGender(int minAge, int maxAge, int gender);
在repository中我們可以自定義查找條件的方法
findBy前綴為查找實(shí)體數(shù)據(jù),countBy前綴表示查找實(shí)體數(shù)量,deleteBy前綴為刪除數(shù)據(jù)
這三種后面跟隨的都是查找條件,多條件用and或or連接
比如上面的例子就是搜索(age between minAge and maxAge) and gender = gender
搜索條件支持定向查找,模糊查找,比較查找等等。
測(cè)試代碼地址:HelloSpringBoot: SpringBoot測(cè)試項(xiàng)目
到此這篇關(guān)于SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)SpringBoot連接MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Java并發(fā)容器ConcurrentHashMap#put方法解析
下面小編就為大家?guī)硪黄贘ava并發(fā)容器ConcurrentHashMap#put方法解析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例
這篇文章主要介紹了Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例,Swing是一個(gè)用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包,需要的朋友可以參考下2014-10-10
Springboot重寫addInterceptors()方法配置攔截器實(shí)例
這篇文章主要介紹了Springboot重寫addInterceptors()方法配置攔截器實(shí)例,spring?boot拋棄了復(fù)雜的xml配置,我們可以自定義配置類(標(biāo)注@Configuration注解的類)來實(shí)現(xiàn)WebMvcConfigurer接口,并重寫addInterceptors()方法來配置攔截器,需要的朋友可以參考下2023-09-09
Java實(shí)現(xiàn)多線程斷點(diǎn)下載
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多線程斷點(diǎn)下載的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
帶你一文深入認(rèn)識(shí)Java?String類
這篇文章主要介紹了帶你一文深入認(rèn)識(shí)Java?String類,String 類在Java中是很常用的類,很重要的類,在后續(xù)的學(xué)習(xí)中經(jīng)常會(huì)用到,是后續(xù)學(xué)習(xí)的基礎(chǔ), 文章圍繞主題展開更多詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-06-06
Java下載文件中文文件名亂碼的解決方案(文件名包含很多%)
Java下載文件時(shí),文件名中文亂碼問題通常是由于編碼不正確導(dǎo)致的,使用`URLEncoder.encode(filepath, "UTF-8")`可以解決在提示下載框中正確顯示漢字文件名的問題,但在選擇直接打開時(shí),文件名會(huì)變成亂碼,解決這個(gè)問題的方法2025-02-02
Java?超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中的堆的應(yīng)用
堆首先是一個(gè)完全二叉樹,堆分為小根堆和大根堆。小根堆,所有結(jié)點(diǎn)的左右子節(jié)點(diǎn)都不小于根節(jié)點(diǎn);大根堆,所有結(jié)點(diǎn)的左右子節(jié)點(diǎn)都不大于根節(jié)點(diǎn)。優(yōu)先級(jí)隊(duì)列(priorityQueue)底層就是一個(gè)小根堆2022-04-04

