SpringBoot基礎回顧-11

Spring Boot整合JPAjava

(1)添加Spring Data
JPA依賴啓動器。在項目的pom.xml文件中添加Spring
Data JPA依賴啓動器,示例代碼以下redis

<dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

(2)編寫ORM實體類。spring

@Entity(name = "t_comment")  // 設置ORM實體類,並指定映射的表名

public class Comment {

 

   
@Id   // 代表映射對應的主鍵id

   
@GeneratedValue(strategy = GenerationType.IDENTITY) // 設置主鍵自增策略

   
private Integer id;

   
private String content;

   
private String author;

 

   
@Column(name = "a_id") 
//指定映射的表字段名

   
private Integer aId;

      // 省略屬性getXX()和setXX()方法

         // 省略toString()方法

       }

(3)編寫Repository接口
:CommentRepository數據庫

public interface CommentRepository extends
JpaRepository<Comment,Integer> {

 

}

(4)測試服務器

@Autowired

   
private CommentRepository repository;

 

   
@Test

   
public void selectComment() {

       
Optional<Comment> optional = repository.findById(1);

              if(optional.isPresent()){

                   
System.out.println(optional.get());

                }

            
System.out.println();

 

    }

3.3

Spring Boot整合Redisapp


除了對關係型數據庫的整合支持外,Spring Boot對非關係型數據庫也提供了很是好的支持。Spring Boot與非關係型數據庫Redis的整合使用 dom

(1)添加Spring Data Redis依賴啓動器。先在項目的pom.xml文件中添加Spring Data Redis依賴啓動器,示例代碼以下spring-boot

<dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

(2)編寫實體類。此處爲了演示Spring
Boot與Redis數據庫的整合使用,在項目的com.lagou.domain包下編寫幾個對應的實體類工具

@RedisHash("persons")  // 指定操做實體類對象在Redis數據庫中的存儲空間

      public class Person {

       
@Id        // 標識實體類主鍵 

             private String id;

       
@Indexed  // 標識對應屬性在Redis數據庫中生成二級索引

             private String firstname;

       
@Indexed

             private String lastname;

              private
Address address;

   
// 省略屬性getXX()和setXX()方法

   
// 省略有參和無參構造方法

   
// 省略toString()方法

       }

Address :單元測試

public class Address {

             @Indexed

             private String city;

             @Indexed

             private String country;

         
// 省略屬性getXX()和setXX()方法

         
// 省略有參和無參構造方法

         
// 省略toString()方法

}

實體類示例中,針對面向Redis數據庫的數據操做設置了幾個主要註解,這幾個註解的說明以下 :

  • @RedisHash("persons"):用於指定操做實體類對象在Redis數據庫中的存儲空間,此處表示針對Person實體類的數據操做都存儲在Redis數據庫中名爲persons的存儲空間下。
  • @Id:用於標識實體類主鍵。在Redis數據庫中會默認生成字符串形式的HashKey表示惟一的實體對象id,固然也能夠在數據存儲時手動指定id。
  • @Indexed:用於標識對應屬性在Redis數據庫中生成二級索引。使用該註解後會在Redis數據庫中生成屬性對應的二級索引,索引名稱就是屬性名,能夠方便的進行數據條件查詢。

(3)編寫Repository接口。Spring Boot針對包括Redis在內的一些經常使用數據庫提供了自動化配置,能夠經過實現Repository接口簡化對數據庫中的數據進行增刪改查操做

public interface PersonRepository extends
CrudRepository<Person,String> {

   
List<Person> findByAddress_City(String 北京);

}
  • 須要說明的是,在操做Redis數據庫時編寫的Repository接口文件須要繼承最底層的CrudRepository接口,而不是繼承JpaRepository,這是由於JpaRepository是Spring Boot整合JPA特有的。固然,也能夠在項目pom.xml文件中同時導入Spring Boot整合的JPA依賴和Redis依賴,這樣就能夠編寫一個繼承JpaRepository的接口操做Redis數據庫

(4)Redis數據庫鏈接配置。在項目的全局配置文件application.properties中添加Redis數據庫的鏈接配置,示例代碼以下

# Redis服務器地址

spring.redis.host=127.0.0.1

# Redis服務器鏈接端口

spring.redis.port=6379

# Redis服務器鏈接密碼(默認爲空)

spring.redis.password=

(5)編寫單元測試進行接口方法測試

@RunWith(SpringRunner.class)

@SpringBootTest

public class RedisTests {

 

   
@Autowired

   
private PersonRepository repository;

 

   
@Test

   
public void savePerson() {

       
Person person = new Person();

       
person.setFirstname("張");

       
person.setLastname("三");

 

       
Address address = new Address();

       
address.setCity("北京");

       
address.setCountry("中國");

       
person.setAddress(address);

 

       
// 向Redis數據庫添加數據

       
Person save = repository.save(person);

 

    }

 

   
@Test

   
public void selectPerson() {

       
List<Person> list = (List<Person>) repository.findByAddress_City("北京");

       
for (Person person : list) {

           
System.out.println(person);

       
}

    }


整合測試 :


爲了驗證savePerson()方法的執行效果,還能夠打開以前鏈接的Redis客戶端可視化管理工具查看數據,效果如圖 ( 可能須要Reload刷新 )

執行savePerson()方法添加的數據在Redis數據庫中存儲成功。另外,在數據庫列表左側還生成了一些相似address.city、firstname、lastname等二級索引,這些二級索引是前面建立Person類時在對應屬性上添加@Indexed註解而生成的。同時,因爲在Redis數據庫中生成了對應屬性的二級索引,因此能夠經過二級索引來查詢具體的數據信息,例如repository.findByAddress_City("北京")經過address.city索引查詢索引值爲「北京」的數據信息。若是沒有設置對應屬性的二級索引,那麼經過屬性索引查詢數據結果將會爲空。

上了拉勾教育的《Java工程師高薪訓練營》,作一下筆記。但願拉勾能給我推到想去的公司,目標:字節!!

相關文章
相關標籤/搜索