MongoDB的學習,Spring整合MongoDB

添加Spring-data-mongodb的依賴。

<code><dependency>
<groupid>org.springframework.data/<groupid>

<artifactid>spring-data-mongodb/<artifactid>
<version>1.10.9.RELEASE/<version>
/<dependency>/<code>

1. spring-data-mongodb2.x.x版本,如果是spring為5.0版本以上的才推薦使用;

2. spring-data-mongodb的1.10.9版本基於spring4.3.x開發。

3. spring-data-mongodb一般使用pojo的方式開發;

4.與MongoDB Server 3.4和MongoDB Java驅動程序3.4兼容。

具體可參看官方文檔:

https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#new-features.1-10-0

添加spring的其他依賴:

<code> <dependency>
<groupid>org.springframework/<groupid>
<artifactid>spring-test/<artifactid>
<version>4.3.2.RELEASE/<version>
<scope>test/<scope>
/<dependency>
<dependency>
<groupid>org.springframework/<groupid>
<artifactid>spring-context/<artifactid>
<version>4.3.3.RELEASE/<version>
/<dependency>
<dependency>
<groupid>org.springframework/<groupid>
<artifactid>spring-core/<artifactid>
<version>4.3.3.RELEASE/<version>
/<dependency>
<dependency>
<groupid>org.springframework/<groupid>
<artifactid>spring-context-support/<artifactid>
<version>4.3.3.RELEASE/<version>
/<dependency>
<dependency>
<groupid>org.springframework/<groupid>
<artifactid>spring-beans/<artifactid>
<version>4.3.3.RELEASE/<version>
/<dependency>

<dependency>
<groupid>org.springframework/<groupid>
<artifactid>spring-aop/<artifactid>
<version>4.3.3.RELEASE/<version>
/<dependency>/<code>

日誌的依賴:

<code><dependency>
<groupid>junit/<groupid>
<artifactid>junit/<artifactid>
<version>4.12/<version>
<scope>test/<scope>
/<dependency>
<dependency>
<groupid>org.slf4j/<groupid>
<artifactid>slf4j-api/<artifactid>
<version>1.7.10/<version>
/<dependency>
<dependency>
<groupid>ch.qos.logback/<groupid>
<artifactid>logback-classic/<artifactid>
<version>1.1.2/<version>
/<dependency>
<dependency>
<groupid>ch.qos.logback/<groupid>
<artifactid>logback-core/<artifactid>
<version>1.1.2/<version>
/<dependency>/<code>

spring的配置文件:

<code>
<beans>\txmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
\txmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
\txsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
\t\thttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
\t\thttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
\t\thttp://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">

\t<component-scan>
\t/<component-scan>

\t
\t<mongo-client>
\t\t<client-options>\t\t write-concern="ACKNOWLEDGED"
\t\t connections-per-host="1"

\t\t threads-allowed-to-block-for-connection-multiplier="5"
\t\t max-wait-time="120000"
\t\t\t connect-timeout="10000"/>
\t/<client-options>/<mongo-client>

\t
\t<db-factory>

\t<mapping-converter>
\t\t <custom-converters>
\t\t <converter>
\t\t <bean>
\t\t /<converter>
\t\t <converter>
\t\t <bean>
\t\t /<converter>
\t /<custom-converters>
\t/<mapping-converter>


\t<bean>
\t\t<constructor-arg>
\t\t<constructor-arg>
\t\t<property>
\t/<bean>

/<beans>
/<code>

Programmer實體類:

<code>//程序員類,省去了get/set方法
public class Programmer {

//名稱
private String name;

//類型
private String type;

//生活方式
private String life;

//薪水
private BigDecimal salary;


//髮量
private String hair;

//愛好
private Favorites favorites;
}

public class Favorites {
\tprivate List<string> books;
\tprivate List<string> movies;
\tpublic List<string> getMovies() {
\t\treturn movies;
\t}
\tpublic void setMovies(List<string> movies) {
\t\tthis.movies = movies;
\t}
\tpublic List<string> geBooks() {
\t\treturn books;
\t}
\tpublic void setBooks(List<string> books) {
\t\tthis.books = books;
\t}


}/<string>/<string>/<string>/<string>/<string>/<string>/<code>

mongodb客戶端配置類:

<code>@Configurationpublic class AppConfig {

/* * Use the standard Mongo driver API to create a com.mongodb.MongoClient instance. */ @Bean public MongoClient mongoClient() {

WriteConcern acknowledged = WriteConcern.JOURNALED;
MongoClientOptions mco = MongoClientOptions.builder()
.writeConcern(acknowledged)
.connectionsPerHost(100)
.threadsAllowedToBlockForConnectionMultiplier(5)
.maxWaitTime(120000).connectTimeout(10000).build();

MongoClient client = new MongoClient(new ServerAddress("192.168.1.120", 27022), mco);

return client;
}
}/<code>

測試插入方法:

<code>//spring Pojo的操作方式@RunWith(SpringJUnit4ClassRunner.class) 

@ContextConfiguration("classpath:applicationContext.xml")
//spring Pojo的操作方式
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringPojoTest {

\tprivate static final Logger logger = LoggerFactory.getLogger(SpringPojoTest.class);

\t@Resource
\tprivate MongoOperations tempelate;

@Test
public void insertDemo(){

\t\tlogger.info("====================開始插入數據====================");
\t\tProgrammer programmer1 = new Programmer();
\t\tprogrammer1.setName("java");
\t\tprogrammer1.setType("Java高級程序員");
\t\tprogrammer1.setLife("喜愛加班,不加班渾身不舒服");
\t\tprogrammer1.setSalary(new BigDecimal("20065.22"));
\t\tprogrammer1.setHair("發亮還好,也不多了");
\tFavorites favorites1 = new Favorites();
\tfavorites1.setBooks(Arrays.asList("Java高併發","微服務","docker"));
\tfavorites1.setMovies(Arrays.asList("學習Java,迎娶白富美,走上人生巔峰","倉老師的辛苦歷險記"));
\t\tprogrammer1.setFavorites(favorites1);


\t\tProgrammer programmer2 = new Programmer();
\t\tprogrammer2.setName("java");
\t\tprogrammer2.setType("Java架構師");
\t\tprogrammer2.setLife("不愛加班,喜歡鑽研技術,技術探討,聊技術就開始BB");
\t\tprogrammer2.setSalary(new BigDecimal("30065.22"));
\t\tprogrammer2.setHair("發亮岌岌可危");
\t\tFavorites favorites2 = new Favorites();
\t\tfavorites2.setBooks(Arrays.asList("SpringCloud源碼解析","手寫redis客戶端","手寫springMvc"));
\t\tfavorites2.setMovies(Arrays.asList("高可用,高併發,都不在話下,原理解析思路清晰","東京熱的讓人發慌"));


\ttempelate.insertAll(Arrays.asList(programmer1,programmer2));

\t\tlogger.info("====================結束插入數據====================");
}
}/<code>
MongoDB的學習,Spring整合MongoDB

測試更新方法:

<code>    @Test
public void testUpdate(){
\t//update programmer set life = '喜歡炒股' where type = 'Java架構師'
\tWriteResult updateFirst = tempelate.updateMulti(query(where("type").is("Java架構師")), update("life", "喜歡炒股"), Programmer.class);
\t\tlogger.info("result1:"+updateFirst.getN());

\tQuery query = query(where("type").is("Java高級程序員"));
\t\tUpdate update = new Update().addToSet("favorites.movies").each("小電影2 ", "小電影3");
\t\tWriteResult updateMulti = tempelate.updateMulti(query, update, Programmer.class);
\t\tlogger.info("result2:"+updateMulti.getN());
}/<code>
MongoDB的學習,Spring整合MongoDB

測試查詢方法:

<code>    @Test
public void testFind(){

\tList<programmer> find = tempelate.find(query(where("favorites.books").all(Arrays.asList("微服務","docker"))), Programmer.class);
\t\tlogger.info("result1:"+find.size());

\tString regexStr = ".*發亮.*";
\tCriteria regex = where("hair").regex(regexStr);
\tCriteria or1 = where("type").is("Java高級程序員");
\tCriteria or2 = where("type").is("Java架構師");
\tCriteria or = new Criteria().orOperator(or1,or2);
\tQuery query = query(new Criteria().andOperator(regex,or));
\tList<programmer> find2 = tempelate.find(query, Programmer.class);
\t\tlogger.info("result2:"+find2.size());

\t}/<programmer>/<programmer>/<code>
MongoDB的學習,Spring整合MongoDB

測試刪除方法:

<code>    @Test
public void testDelete(){

\t//delete from programmer where type = 'Java高級程序員'
\tWriteResult remove = tempelate.remove(query(where("type").is("Java高級程序員")), Programmer.class);
\t\tlogger.info("result1:"+remove.getN());

\t//delete from programmer where salary > 20000 and salary <30000
\tWriteResult remove2 = tempelate.remove(query(new Criteria().andOperator(where("salary").gt(20000),where("age").lt(30000))), Programmer.class);
\t\tlogger.info("result2:"+remove2.getN());

}/<code>
MongoDB的學習,Spring整合MongoDB


分享到:


相關文章: