MongoDb學習(四)--Repository
阿新 • • 發佈:2018-12-03
在學習這個的時候。關於Repository的對映。在備註xml的時候出現了錯誤。
錯誤有點坑。以後寫的時候注意一點,在學習的時候。用的mongo的jar包版本比較低。
然而本機操作的時候,用的是最新版。其xml的配置發生的變化。
關於配置的資訊。在配置的時候去官網查一下當前版本的使用方法。
這裡記錄一下spring-data-mongodb 的使用方法。增刪改查。語法使用等。
通過學習這個。發現spring的好處。降低了開發門檻。而且可以提高開發的速度。還是不錯的。
在前面幾次學習中。都是使用的原生方法進行查詢。這次換一種全新的方法。
基本操作就是建立一個自定義Repository的介面。讓他繼承與CrudRepository。
然後裡面有附帶的一些增刪改查的方法。
這個最大的好處就是我們只用關注業務邏輯和介面的定義即可。
開發的時候,可以直接寫介面。然後不用去寫實現類,除非有複雜的方法有實現。
當然,這個接口裡面的方法不是隨便寫的。而是有標準與規範的。具體寫法,可以去官網查詢api文件
當前版本
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.1.3.RELEASE</version> </dependency>
配置檔案,版本不同,配置檔案不同
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation= "http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Default bean name is 'mongo' --> <mongo:mongo-client host="localhost" port="27017"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongoClient"/> <constructor-arg name="databaseName" value="chaoba"/> </bean> <mongo:repositories base-package="SpringMogo.mongo" /> </beans>
List<Chaoba> findByName(String name);//根據條件查詢 List<Chaoba> findByNameAndSex(String name,String sex);//and查詢 List<Chaoba> findByNameAndSexAndAge(String name,String sex,String age);//多個and查詢 List<Chaoba> findByNameOrSex(String name,String sex);//or查詢 List<Chaoba> findByName(String name,Pageable page);//分頁查詢 List<Chaoba> findByName(String name,Sort sort);//排序查詢 List<Chaoba> findTop2ByName(String name);//查詢前幾條
本次學習程式碼如下
ChaobaRepository類 package SpringMogo.mongo; import java.util.List; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository("ChaobaRepository") public interface ChaobaRepository extends CrudRepository<Chaoba, String> { List<Chaoba> findByName(String name);// 根據條件查詢 List<Chaoba> findByNameAndSex(String name, String sex);// and查詢 List<Chaoba> findByNameAndSexAndAge(String name, String sex, String age);// 多個and查詢 List<Chaoba> findByNameOrSex(String name, String sex);// or查詢 List<Chaoba> findByName(String name, Pageable page);// 分頁查詢 List<Chaoba> findByName(String name, Sort sort);// 排序查詢 List<Chaoba> findTop2ByName(String name);// 查詢前幾條 }
實體類 package SpringMogo.mongo; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; @Document(collection = "chaoba1") public class Chaoba { @Id private String id; @Field("name") private String name; @Field("sex") private String sex; @Field("age") private String 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 String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
測試類 package SpringMogo.mongo; import java.util.List; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Order; /** * Hello world! * */ public class App { private static ChaobaRepository chaobaRepository; static { chaobaRepository = (ChaobaRepository) new ClassPathXmlApplicationContext("classpath:spring.xml") .getBean("ChaobaRepository"); } public static void main(String[] args) { System.out.println(chaobaRepository.count()); // List<Chaoba> result= chaobaRepository.findByName("暮雪超霸"); // And查詢 // List<Chaoba> result= // chaobaRepository.findByNameAndSexAndAge("chaoba4565","男","20"); // Or查詢 // List<Chaoba> result= chaobaRepository.findByNameOrSex("chaoba4565","女"); // 分頁查詢 // List<Chaoba> result= chaobaRepository.findByName("暮雪超霸",new PageRequest(1, // 5)); // 排序查詢 // List<Chaoba> result= chaobaRepository.findByName("暮雪超霸",new // Sort(Order.asc("title"))); // Top查詢 List<Chaoba> result = chaobaRepository.findTop2ByName("暮雪超霸"); for (Chaoba chaoba : result) { System.out.println(chaoba.getName()); } } }