spring data 是一個家族在使用中大同小異
本人寫的spring data是通過maven子父工程管理
parent項目的 :
pom.xml<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-boot-data</artifactId>
<groupId>com.ronnie</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-data-mongodb</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
propertise
spring:
data:
mongodb:
uri: mongodb://root:password@iip:27017/yourdb
document對象
package com.ronnie.data.document;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @Description:
* @Author: rongyu
* @CreateDate: 2018/9/1$ 14:25$
* @Remark:
*/
@Data
@Document
public class Member {
private Long memberId;
private String username;
private String password;
}
關于@Id 注解在沒有時會自動生成objectId 為_id 如果@Id 有則使用注解字段為_id,再調用儲存時沒有@id 資料庫自動維護,@id存在會直接報儲存或者替換
dao
package com.ronnie.data.repository;
import com.ronnie.data.document.Member;
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* @Description:
* @Author: rongyu
* @CreateDate: 2018/9/1$ 14:28$
* @Remark:
*/
public interface MemberRepository extends MongoRepository<Member,Long> {
}
繼承後直接注入使用
package com.ronnie.data;
import com.ronnie.data.document.Member;
import com.ronnie.data.repository.MemberRepository;
import lombok.extern.slf4j.Slf4j;
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.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.LinkedList;
import java.util.List;
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
MemberRepository memberRepository;
@Autowired
MongoTemplate mongoTemplate;
@Test
public void queryDemo() {
// add Sort
Sort.Order order1 = new Sort.Order(Sort.Direction.DESC,"id");
Sort.Order order2 = new Sort.Order(Sort.Direction.ASC,"username");
Sort sort = Sort.by(order1,order2);
// add condition
Member member = new Member();
member.setUsername("admin");
Example<Member> memberExample = Example.of(member);
// add pageRequest
PageRequest pageRequest = PageRequest.of(0, 10, sort);
// query result
Page<Member> page = memberRepository.findAll(memberExample,pageRequest);
log.info("page={}", page);
}
}
MongoRepository接口之中所有方法,接受的都是分頁查詢過程中的對象,直接調用即可
也可以直接注入mongoTemplate 進行操作
github
https://github.com/ronnierry/spring-boot-data/tree/master/spring-data-jpaQQ群 : 869658872