springboot整合JPA訪問Mysql的實現(xiàn)方法
1.代碼實現(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的配置屬性,其主要作用是:自動創(chuàng)建、更新、驗證數(shù)據(jù)庫表結(jié)構(gòu)。該參數(shù)的幾種配置如下:
create:每次加載hibernate時都會刪除上一次的生成的表,然后根據(jù)你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執(zhí)行,這就是導(dǎo)致數(shù)據(jù)庫表數(shù)據(jù)丟失的一個重要原因。
create-drop:每次加載hibernate時根據(jù)model類生成表,但是sessionFactory一關(guān)閉,表就自動刪除。
update:最常用的屬性,第一次加載hibernate時根據(jù)model類會自動建立起表的結(jié)構(gòu)(前提是先建立好數(shù)據(jù)庫),以后加載hibernate時根據(jù)model類自動更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會刪除以前的行。要注意的是當(dāng)部署到服務(wù)器后,表結(jié)構(gòu)是不會被馬上建立起來的,是要等應(yīng)用第一次運(yùn)行起來后才會。
validate:每次加載hibernate時,驗證創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu),只會和數(shù)據(jù)庫中的表進(jìn)行比較,不會創(chuàng)建新表,但是會插入新值。
控制層
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 "刪除成功"; ? ? } }
訪問層
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); }
實體類
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)識了User類是一個持久化的實體
@Data和@NoArgsConstructor是Lombok中的注解。用來自動生成各參數(shù)的Set、Get函數(shù)以及不帶參數(shù)的構(gòu)造函數(shù)。
@Id和@GeneratedValue用來標(biāo)識User對應(yīng)對應(yīng)數(shù)據(jù)庫表中的主鍵
2.實現(xiàn)效果:
運(yùn)行項目,打開postman發(fā)起請求
到此這篇關(guān)于springboot整合JPA訪問Mysql的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)springboot JPA訪問Mysql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- IDEA創(chuàng)建SpringBoot項目整合mybatis時mysql-connector-java報錯異常的詳細(xì)分析
- SpringBoot整合Mysql和Redis的詳細(xì)過程
- SpringBoot整合Sharding-JDBC實現(xiàn)MySQL8讀寫分離
- Springboot整合camunda+mysql的集成流程分析
- springboot的yml配置文件通過db2的方式整合mysql的教程
- SpringBoot整合Flyway實現(xiàn)數(shù)據(jù)庫的初始化和版本管理操作
- Springboot 使用maven release插件執(zhí)行版本管理及打包操作
- springboot?整合mysql實現(xiàn)版本管理通用最新解決方案
相關(guān)文章
淺談Spring中@Transactional事務(wù)回滾及示例(附源碼)
本篇文章主要介紹了淺談Spring中@Transactional事務(wù)回滾及示例(附源碼),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12基于SpringBoot和Vue3的博客平臺發(fā)布、編輯、刪除文章功能實現(xiàn)
在上一個教程中,我們已經(jīng)實現(xiàn)了基于Spring?Boot和Vue3的用戶注冊與登錄功能。本教程將繼續(xù)引導(dǎo)您實現(xiàn)博客平臺的發(fā)布、編輯、刪除文章功能,需要的朋友參考一下2023-04-04spring aop action中驗證用戶登錄狀態(tài)的實例代碼
本篇文章主要介紹了spring aop action中驗證用戶登錄狀態(tài)的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07java 單元測試 對h2數(shù)據(jù)庫數(shù)據(jù)清理方式
這篇文章主要介紹了java 單元測試 對h2數(shù)據(jù)庫數(shù)據(jù)清理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java8?Stream?collect(Collectors.toMap())的使用
這篇文章主要介紹了Java8?Stream?collect(Collectors.toMap())的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05Spring?createBeanInstance實例化Bean
這篇文章主要為大家介紹了Spring?createBeanInstance實例化Bean源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問題實例分析
這篇文章主要介紹了JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問題,結(jié)合實例形式分析了JAVA 多態(tài)操作中父類與子類轉(zhuǎn)換問題相關(guān)原理、操作技巧與注意事項,需要的朋友可以參考下2020-05-05