springboot整合JPA訪問(wèn)Mysql的實(shí)現(xiàn)方法
1.代碼實(shí)現(xiàn):
添加依賴
?<dependency> ? ? ? ? ? ? <groupId>org.springframework.boot</groupId> ? ? ? ? ? ? <artifactId>spring-boot-starter</artifactId> ? ? ? ? </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> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.springframework.boot</groupId> ? ? ? ? ? ? <artifactId>spring-boot-starter-web</artifactId> ? ? ? ? </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>
yml配置
spring: ? application: ? ? name: auth-server ? datasource: ? ? url: jdbc:mysql://127.0.0.1:3306/spring_cloud?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false ? ? username: root ? ? password: 123456 ? ? hikari: ? ? ? connection-timeout: 30000 ? ? ? idle-timeout: 600000 ? ? ? max-lifetime: 1800000 ? ? ? maximum-pool-size: 9 ? jpa: ? ? properties: ? ? ? hibernate: ? ? ? ? hbm2ddl: ? ? ? ? ? auto: create-drop
spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置屬性,其主要作用是:自動(dòng)創(chuàng)建、更新、驗(yàn)證數(shù)據(jù)庫(kù)表結(jié)構(gòu)。該參數(shù)的幾種配置如下:
create:每次加載hibernate時(shí)都會(huì)刪除上一次的生成的表,然后根據(jù)你的model類再重新來(lái)生成新表,哪怕兩次沒(méi)有任何改變也要這樣執(zhí)行,這就是導(dǎo)致數(shù)據(jù)庫(kù)表數(shù)據(jù)丟失的一個(gè)重要原因。
create-drop:每次加載hibernate時(shí)根據(jù)model類生成表,但是sessionFactory一關(guān)閉,表就自動(dòng)刪除。
update:最常用的屬性,第一次加載hibernate時(shí)根據(jù)model類會(huì)自動(dòng)建立起表的結(jié)構(gòu)(前提是先建立好數(shù)據(jù)庫(kù)),以后加載hibernate時(shí)根據(jù)model類自動(dòng)更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會(huì)刪除以前的行。要注意的是當(dāng)部署到服務(wù)器后,表結(jié)構(gòu)是不會(huì)被馬上建立起來(lái)的,是要等應(yīng)用第一次運(yùn)行起來(lái)后才會(huì)。
validate:每次加載hibernate時(shí),驗(yàn)證創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),只會(huì)和數(shù)據(jù)庫(kù)中的表進(jìn)行比較,不會(huì)創(chuàng)建新表,但是會(huì)插入新值。
控制層
package com.cxh.jpa.controller;
import com.cxh.jpa.entity.User;
import com.cxh.jpa.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class UserController {
? ? @Autowired
? ? private IUserService userService;
? ? @GetMapping("/findAll")
? ? public List<User> findAll(){
? ? ? ? return userService.findAll();
? ? }
? ? @GetMapping("/findByName")
? ? public User findByName(String name){
? ? ? ? return userService.findByName(name);
? ? }
? ? @PostMapping("/add")
? ? public String add(User user){
? ? ? ? return userService.add(user);
? ? }
? ? @PutMapping("/edit")
? ? public String edit(User user){
? ? ? ? return userService.edit(user);
? ? }
? ? @DeleteMapping("/deleteById")
? ? public String deleteById(Long id){
? ? ? ? return userService.deleteById(id);
? ? }
}服務(wù)層
package com.cxh.jpa.service.impl;
import com.cxh.jpa.entity.User;
import com.cxh.jpa.repository.UserRepository;
import com.cxh.jpa.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements IUserService {
? ? @Autowired
? ? private UserRepository userRepository;
? ? @Override
? ? public List<User> findAll() {
? ? ? ? return userRepository.findAll();
? ? }
? ? @Override
? ? public User findByName(String name) {
? ? ? ? return userRepository.findByName(name);
? ? }
? ? @Override
? ? public String add(User user) {
? ? ? ? userRepository.save(user);
? ? ? ? return "添加成功";
? ? }
? ? @Override
? ? public String edit(User user) {
? ? ? ? userRepository.save(user);
? ? ? ? return "修改成功";
? ? }
? ? @Override
? ? public String deleteById(Long id) {
? ? ? ? userRepository.deleteById(id);
? ? ? ? return "刪除成功";
? ? }
}訪問(wèn)層
package com.cxh.jpa.repository;
import com.cxh.jpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
public interface UserRepository extends JpaRepository<User, Long> {
? ? User findByName(String name);
? ? @Query("from User u where u.name=:name")
? ? User findUser(@Param("name") String name);
}實(shí)體類
package com.cxh.jpa.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Data
@NoArgsConstructor
public class User {
? ? @Id
? ? @GeneratedValue
? ? private Long id;
? ? private String name;
? ? private Integer age;
}@Entity注解標(biāo)識(shí)了User類是一個(gè)持久化的實(shí)體
@Data和@NoArgsConstructor是Lombok中的注解。用來(lái)自動(dòng)生成各參數(shù)的Set、Get函數(shù)以及不帶參數(shù)的構(gòu)造函數(shù)。
@Id和@GeneratedValue用來(lái)標(biāo)識(shí)User對(duì)應(yīng)對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的主鍵
2.實(shí)現(xiàn)效果:
運(yùn)行項(xiàng)目,打開postman發(fā)起請(qǐng)求

到此這篇關(guān)于springboot整合JPA訪問(wèn)Mysql的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)springboot JPA訪問(wèn)Mysql內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- IDEA創(chuàng)建SpringBoot項(xiàng)目整合mybatis時(shí)mysql-connector-java報(bào)錯(cuò)異常的詳細(xì)分析
- SpringBoot整合Mysql和Redis的詳細(xì)過(guò)程
- SpringBoot整合Sharding-JDBC實(shí)現(xiàn)MySQL8讀寫分離
- Springboot整合camunda+mysql的集成流程分析
- springboot的yml配置文件通過(guò)db2的方式整合mysql的教程
- SpringBoot整合Flyway實(shí)現(xiàn)數(shù)據(jù)庫(kù)的初始化和版本管理操作
- Springboot 使用maven release插件執(zhí)行版本管理及打包操作
- 如何在spring boot項(xiàng)目中使用Spring Security的BCryptPasswordEncoder類進(jìn)行相同密碼不同密文的加密和驗(yàn)證
相關(guān)文章
Java JTable 實(shí)現(xiàn)日歷的示例
這篇文章主要介紹了Java JTable 實(shí)現(xiàn)日歷的示例,幫助大家更好的理解和學(xué)習(xí)Java jtable的使用方法,感興趣的朋友可以了解下2020-10-10
Springboot實(shí)現(xiàn)給前端返回一個(gè)tree結(jié)構(gòu)方法
這篇文章主要介紹了SpringBoot返回給前端一個(gè)tree結(jié)構(gòu)的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
深入淺出重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)
通常來(lái)講,重構(gòu)是指不改變功能的情況下優(yōu)化代碼,但本文所說(shuō)的重構(gòu)也包括了添加功能。這篇文章主要介紹了重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)的相關(guān)資料,需要的朋友可以參考下2016-11-11
idea?maven依賴引入失效無(wú)法正常導(dǎo)入依賴問(wèn)題的解決方法
有時(shí)候idea導(dǎo)入一個(gè)新項(xiàng)目,或者pom文件修改(新增)了依賴,pom文件和代碼會(huì)報(bào)紅,提示依賴包不存在,下面這篇文章主要給大家介紹了關(guān)于idea?maven依賴引入失效無(wú)法正常導(dǎo)入依賴問(wèn)題的解決方法,需要的朋友可以參考下2023-04-04

