詳解Spring Boot JPA訪問Mysql示例代碼(圖文)

本篇文章主要介紹了spring boot jpa訪問mysql示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

上篇演示了通過Maven構建Spring Boot 項目,引用web模塊啟動應用,完成簡單的web 應用訪問,本章內容在此基礎上面加入數據訪問與端口修改,下文代碼與演例(本用例純手工測試通過,放心入坑)。

修改默認端口

在srcmainresources下加入application.properties內容如下

server.port=8888

項目mysql

詳解Spring Boot JPA訪問Mysql示例代碼(圖文)

啟動應用,日志顯示:

詳解Spring Boot JPA訪問Mysql示例代碼(圖文)

端口已經由默認的8080 變更為8888

JPA訪問mysql

1、POM中加入

??<!-- Spring Boot JPA -->  ??<dependency>  ????<groupid>org.springframework.boot</groupid>  ????<artifactid>spring-boot-starter-data-jpa</artifactid>  ????<version>RELEASE</version>  ??</dependency>  ??<!-- MYSQL -->  ??<dependency>  ????<groupid>mysql</groupid>  ????<artifactid>mysql-connector-java</artifactid>  ??</dependency>

2、在srctestresources下加入application.properties內容如下(正式應用中請把配置加入至srcmainresources下application.properties中):

server.port=8888  spring.datasource.url=jdbc:mysql://localhost:3306/test  spring.datasource.username=dbuser  spring.datasource.password=dbpass  spring.datasource.driver-class-name=com.mysql.jdbc.Driver  spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop
  1. create : 會根據你的mysql類來生成表,但是每次運行都會刪除上一次的表,重新生成表,哪怕2次沒有任何改變 (生產禁用,不小心用了會哭的。。)

  2. create-drop : 根據model類生成表,但是sessionFactory一關閉,表就自動刪除 (生產禁用)

  3. update : 最常用的屬性,也根據model類生成表,即使表結構改變了,表中的行仍然存在,不會刪除以前的行

  4. validate : 只會和數據庫中的表進行比較,不會創建新表,但是會插入新值

3、新建實體

srcmainjavacomentityUser.java

package?com.entity;  import?javax.persistence.Entity;  import?javax.persistence.Id;  import?javax.persistence.Table;  import?java.io.Serializable;  @Entity  @Table(name="t_user")  public?class?User?implements?Serializable?{  private?static?final?long?serialVersionUID?=?-3258839839160856613L;  ??@Id  ??@GeneratedValue  ??private?Long?id;    ??private?String?name;    ??private?String?moblie;        ??public?Long?getId()?{  ????return?id;  ??}    ??public?void?setId(Long?id)?{  ????this.id?=?id;  ??}    ??public?String?getName()?{  ????return?name;  ??}    ??public?void?setName(String?name)?{  ????this.name?=?name;  ??}    ??public?String?getMoblie()?{  ????return?moblie;  ??}    ??public?void?setMoblie(String?moblie)?{  ????this.moblie?=?moblie;  ??}  }

新建數據訪問mysql(JPA)

srcmainjavacomdaoUserRepository .java

package?com.dao;    import?entity.User;  import?org.springframework.data.jpa.repository.JpaRepository;    /**  ?*?Description:  ?*?date:?2017/3/15?16:28  ?*/  public?interface?UserRepository?extends?JpaRepository<user>?{    ??User?findByName(String?name);    }</user>

從源碼上面可以看出,JpaRepository已經實現了save(更新與保存)、delete、getOne、findAll等方法,所以對于基礎數據的操作,接口上不需要再定義,直接使用就好。

//  //?Source?code?recreated?from?a?.class?file?by?IntelliJ?IDEA  //?(powered?by?Fernflower?decompiler)  //    package?org.springframework.data.jpa.repository;    import?java.io.Serializable;  import?java.util.List;  import?org.springframework.data.domain.Example;  import?org.springframework.data.domain.Sort;  import?org.springframework.data.repository.NoRepositoryBean;  import?org.springframework.data.repository.PagingAndSortingRepository;  import?org.springframework.data.repository.query.QueryByExampleExecutor;    @NoRepositoryBean  public?interface?JpaRepository<t>?extends?PagingAndSortingRepository<t>,?QueryByExampleExecutor<t>?{  ??List<t>?findAll();    ??List<t>?findAll(Sort?var1);    ??List<t>?findAll(Iterable<id>?var1);    ??<s>?List<s>?save(Iterable<s>?var1);    ??void?flush();    ??<s>?S?saveAndFlush(S?var1);    ??void?deleteInBatch(Iterable<t>?var1);    ??void?deleteAllInBatch();    ??T?getOne(ID?var1);    ??<s>?List<s>?findAll(Example<s>?var1);    ??<s>?List<s>?findAll(Example<s>?var1,?Sort?var2);  }</s></s></s></s></s></s></t></s></s></s></s></id></t></t></t></t></t></t>

4.編寫對應的mysql來驗證編寫的內容是否正確

POM中加入

???<dependency>  ?????<groupid>org.springframework.boot</groupid>  ?????<artifactid>spring-boot-starter-test</artifactid>  ???</dependency>

創建單元測試用例

srctestjavaUserTest.java

import?com.SampleController;  import?com.dao.UserRepository;  import?com.entity.User;  import?org.junit.Assert;  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;    /**  ?*?date:?2017/3/15?17:21  ?*/  @RunWith(SpringRunner.class)  @SpringBootTest(classes?=?SampleController.class)  public?class?UserTest?{    ??@Autowired  ??private?UserRepository?userRepository;    ??@Test  ??public?void?saveTest()?{  ????User?user?=?new?User();  ????user.setName("王大錘");  ????user.setMoblie("13300000000");  ????userRepository.save(user);    ????Assert.assertEquals("13300000000",?userRepository.findByName("王大錘").getMoblie());  ??}  }

運行結果示例

詳解Spring Boot JPA訪問Mysql示例代碼(圖文)

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享