這篇文章主要為大家展示了“SpringBoot2如何實(shí)現(xiàn)集成JPA持久層框架、簡化數(shù)據(jù)庫操作”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“SpringBoot2如何實(shí)現(xiàn)集成JPA持久層框架、簡化數(shù)據(jù)庫操作”這篇文章吧。
創(chuàng)新互聯(lián)是專業(yè)的華坪網(wǎng)站建設(shè)公司,華坪接單;提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行華坪網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化規(guī)范。主要是為了簡化持久層開發(fā)以及整合ORM技術(shù),結(jié)束Hibernate、TopLink、JDO等ORM框架各自為營的局面。JPA是在吸收現(xiàn)有ORM框架的基礎(chǔ)上發(fā)展而來,易于使用,伸縮性強(qiáng)。
org.springframework.boot spring-boot-starter-data-jpa
spring: application: name: node09-boot-jpa datasource: url: jdbc:MySQL://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true username: root password: root driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true
ddl-auto幾種配置說明
1)create
每次加載hibernate時(shí)都刪除上一次的生成的表,然后根據(jù)bean類重新來生成新表,容易導(dǎo)致數(shù)據(jù)丟失,(建議首次創(chuàng)建時(shí)使用)。
2)create-drop
每次加載hibernate時(shí)根據(jù)bean類生成表,但是sessionFactory一關(guān)閉,表就自動(dòng)刪除。
3)update
第一次加載hibernate時(shí)根據(jù)bean類會(huì)自動(dòng)建立起表的結(jié)構(gòu),以后加載hibernate時(shí)根據(jù)bean類自動(dòng)更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會(huì)刪除以前的行。
4)validate
每次加載hibernate時(shí),驗(yàn)證創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu),只會(huì)和數(shù)據(jù)庫中的表進(jìn)行比較,不會(huì)創(chuàng)建新表,但是會(huì)插入新值。
就是根據(jù)這個(gè)對(duì)象生成的表結(jié)構(gòu)。
@Table(name = "t_user") @Entity public class User { @Id @GeneratedValue private Integer id; @Column private String name; @Column private Integer age; // 省略 GET SET }
定義對(duì)象的操作的接口,繼承JpaRepository核心接口。
import com.boot.jpa.entity.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends JpaRepository{ // 但條件查詢 User findByAge(Integer age); // 多條件查詢 User findByNameAndAge(String name, Integer age); // 自定義查詢 @Query("from User u where u.name=:name") User findSql(@Param("name") String name); }
import com.boot.jpa.entity.User; import com.boot.jpa.repository.UserRepository; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class UserService { @Resource private UserRepository userRepository ; // 保存 public void addUser (User user){ userRepository.save(user) ; } // 根據(jù)年齡查詢 public User findByAge (Integer age){ return userRepository.findByAge(age) ; } // 多條件查詢 public User findByNameAndAge (String name, Integer age){ return userRepository.findByNameAndAge(name,age) ; } // 自定義SQL查詢 public User findSql (String name){ return userRepository.findSql(name) ; } // 根據(jù)ID修改 public void update (User user){ userRepository.save(user) ; } //根據(jù)id刪除一條數(shù)據(jù) public void deleteStudentById(Integer id){ userRepository.deleteById(id); } }
import com.boot.jpa.JpaApplication; import com.boot.jpa.entity.User; import com.boot.jpa.service.UserService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = JpaApplication.class) public class UserJpaTest { @Resource private UserService userService ; @Test public void addUser (){ User user = new User() ; user.setName("知了一笑"); user.setAge(22); userService.addUser(user); User user1 = new User() ; user1.setName("cicada"); user1.setAge(23); userService.addUser(user1); } @Test public void findByAge (){ Integer age = 22 ; // User{id=3, name='知了一笑', age=22} System.out.println(userService.findByAge(age)); } @Test public void findByNameAndAge (){ System.out.println(userService.findByNameAndAge("cicada",23)); } @Test public void findSql (){ // User{id=4, name='cicada', age=23} System.out.println(userService.findSql("cicada")); } @Test public void update (){ User user = new User() ; // 如果這個(gè)主鍵不存在,會(huì)以主鍵自增的方式新增入庫 user.setId(3); user.setName("哈哈一笑"); user.setAge(25); userService.update(user) ; } @Test public void deleteStudentById (){ userService.deleteStudentById(5) ; } }
以上是“SpringBoot2如何實(shí)現(xiàn)集成JPA持久層框架、簡化數(shù)據(jù)庫操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!