Spring Boot 2+Redis例
17461 ワード
Redisはkey-valueデータベースで、string(文字列)、list(チェーンテーブル)、set(集合)、zset(sorted set--秩序集合)、hash(ハッシュタイプ)を含む格納されたvalueタイプをサポートします.JavaではRedisson,Jedisが広く使用されている.Spring Data RedisモジュールのデフォルトではJedisが使用されます.
開発環境:IntelliJ IDEA 2019.2.2 Spring Bootバージョン:2.1.8
一、プロジェクト構築
1、demoという名前のSpring Bootプロジェクトを新規作成します.2、pom.xml
3、application.yml
Redisの関連属性を設定します.
二、実体類
1、User.java
Redisのデータのマッピング:(1)クラス@RedisHash注記を使用して、Userオブジェクトがhashタイプで保存されることを示します.(2)フィールドidは@Id注記を用いてguidを自動的に生成することを示す.(3)フィールドは@Indexed表現を使用してインデックスを作成し、メソッド名クエリー時にこの注釈を設定する必要がある.
三、データアクセス層
1、データアクセス層UserRepository.java
CrudRepositoryを継承するには、実装を必要とせず、基本的なCRUD操作を持つことができます.コード実装メソッド名クエリーを手動で追加することもできます.
四、業務層
1、UserRepository.java
五、コントローラ
1、UserController.java
サーバの起動、ブラウザのアクセス:http://localhost:8080/save 20個のテストデータを生成し、アクセスするhttp://localhost:8080/getUsersを選択します.
その他のコントローラの方法は省略します.
開発環境:IntelliJ IDEA 2019.2.2 Spring Bootバージョン:2.1.8
一、プロジェクト構築
1、demoという名前のSpring Bootプロジェクトを新規作成します.2、pom.xml
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-devtoolsartifactId>
dependency>
3、application.yml
Redisの関連属性を設定します.
spring:
redis:
port: 6379
password: 123456
host: localhost
二、実体類
1、User.java
Redisのデータのマッピング:(1)クラス@RedisHash注記を使用して、Userオブジェクトがhashタイプで保存されることを示します.(2)フィールドidは@Id注記を用いてguidを自動的に生成することを示す.(3)フィールドは@Indexed表現を使用してインデックスを作成し、メソッド名クエリー時にこの注釈を設定する必要がある.
package com.example.demo.entity;
import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;
import org.springframework.data.redis.core.index.Indexed;
@RedisHash("user")
public class User {
@Id
private String id;
@Indexed
private String name;
@Indexed
private Integer age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
三、データアクセス層
1、データアクセス層UserRepository.java
CrudRepositoryを継承するには、実装を必要とせず、基本的なCRUD操作を持つことができます.コード実装メソッド名クエリーを手動で追加することもできます.
package com.example.demo.repository;
import com.example.demo.entity.User;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface UserRepository extends CrudRepository {
// : name
List findByName(String name);
// : name age And
List findByNameAndAge(String name, Integer age);
// : name age Or
List findByNameOrAge(String name, Integer age);
}
四、業務層
1、UserRepository.java
package com.example.demo.service;
import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@Service
public class UserService {
@Autowired
UserRepository userRepository;
public List getUsers(){
Iterable users = userRepository.findAll();
List datas = new ArrayList();
for(Iterator it = users.iterator(); it.hasNext();){
User u = it.next();
datas.add(u);
}
return datas;
}
public void save(User user) {
userRepository.save(user);
}
public List findByName(String name){
return userRepository.findByName(name);
}
public List findByNameAndAge(String name, Integer age){
return userRepository.findByNameAndAge(name, age);
}
public List findByNameOrAge(String name, Integer age){
return userRepository.findByNameOrAge(name, age);
}
}
五、コントローラ
1、UserController.java
package com.example.demo;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
public class UserController {
@Resource
UserService userService;
@RequestMapping("/save")
public String save(){
for(int i=1;i<=20;i++){
User user = new User();
user.setName("a" + i);
user.setAge(i);
userService.save(user);
}
return " ";
}
@RequestMapping("/getUsers")
public List getUsers(){
List users = userService.getUsers();
return users;
}
@RequestMapping("/findByName")
public List findByName(String name){
return userService.findByName(name);
}
@RequestMapping("/findByNameAndAge")
public List findByNameAndAge(String name, Integer age){
return userService.findByNameAndAge(name, age);
}
@RequestMapping("/findByNameOrAge")
public List findByNameOrAge(String name, Integer age){
return userService.findByNameOrAge(name, age);
}
}
サーバの起動、ブラウザのアクセス:http://localhost:8080/save 20個のテストデータを生成し、アクセスするhttp://localhost:8080/getUsersを選択します.
[{"id":"8da6f5ad-b24c-4725-9c69-4d709369eac7","name":"a14","age":14},{"id":"b62b2028-4d41-41be-aeff-e2b56776dd87","name":"a10","age":10},{"id":"c8330a2a-902b-4db9-b262-65d182027eac","name":"a6","age":6},{"id":"cc7b5a91-0ca6-4577-891a-835a1cebef6f","name":"a11","age":11},{"id":"09f8f2e3-2cf8-48f7-a535-1897b7cc0f35","name":"a1","age":1},{"id":"3344413f-8128-42ad-8343-304005c87e5f","name":"a7","age":7},{"id":"db74f020-f3e3-4422-8013-c515b9d8551d","name":"a5","age":5},{"id":"7fc46621-ecaf-47c6-bae3-f2061104d802","name":"a2","age":2},{"id":"dcdcdda0-bab0-450a-b6e6-fdce410b01fd","name":"a8","age":8},{"id":"b456f4fd-158f-43e9-86cf-0340b809ffab","name":"a12","age":12},{"id":"4ffb6019-21b1-4880-8ec3-2703f561d028","name":"a15","age":15},{"id":"7e45d738-7a31-4b24-928e-a9da3583ef6d","name":"a4","age":4},{"id":"7992e502-4049-4d40-bc35-aab72adbe335","name":"a19","age":19},{"id":"3df7b2ac-6bb0-496d-91d2-05ac763e5f68","name":"a13","age":13},{"id":"7c94edba-f91e-42fe-b8b4-7c6a9ba82747","name":"a3","age":3},{"id":"39402099-17ba-4368-ac23-dd5e9fe1d8ae","name":"a17","age":17},{"id":"e49750d6-ce80-4764-87d3-1566d9263360","name":"a18","age":18},{"id":"499e1a9a-b947-4eec-8d37-d1cdf7ac1179","name":"a16","age":16},{"id":"04f0cb4e-c17b-4b4e-b135-e6c222aace21","name":"a9","age":9},{"id":"ac48ce35-5a38-48b8-90b9-6b999c3fd242","name":"a20","age":20}]
その他のコントローラの方法は省略します.