一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 使用spring連接及操作mongodb3.0實(shí)例

使用spring連接及操作mongodb3.0實(shí)例

2020-07-14 17:49生_若蜉蝣 Java教程

這篇文章主要介紹了使用spring連接及操作mongodb3.0實(shí)例,詳細(xì)的介紹了使用spring的情況下,在java中簡(jiǎn)單操作mongodb。有興趣的可以了解一下。

前邊有一篇記錄過(guò)不使用spring,直接在java代碼中連接和操作mongodb數(shù)據(jù)庫(kù),這里就緊隨其后記錄一下使用spring的情況下,在java中簡(jiǎn)單操作mongodb。

maven導(dǎo)包配置:

因?yàn)樯婕傲藄ping以及springmvc,因此也需要導(dǎo)入它們相關(guān)的包:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<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/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>spring_mongo</groupId>
 <artifactId>spring_mongo</artifactId>
 <packaging>war</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>spring_mongo Maven Webapp</name>
 <url>http://maven.apache.org</url>
 <dependencies>
  <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.8.0.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.0.3</version>
  </dependency>
  <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.1.6.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.1.7.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.0.9.RELEASE</version>
  </dependency>
 </dependencies>
 <build>
 <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
          <compilerArguments
           <verbose /> 
           <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath
          </compilerArguments
        </configuration>
      </plugin>
    </plugins>
  <finalName>spring_mongo</finalName>
 </build>
</project>

spring基礎(chǔ)配置:

主要是開啟注解掃描等:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:task="http://www.springframework.org/schema/task"
  xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd">
 
  <!-- 自動(dòng)掃描(自動(dòng)注入) -->
  <context:component-scan base-package="spring_mogo.dao.daoImp" />
 
  <!-- 導(dǎo)入mongodb的配置文件 -->
  <import resource="spring-mongodb305.xml" />
 
  <!-- 開啟注解 -->
  <context:annotation-config />
 
</beans>

spring連接mongodb以及建立相關(guān)工廠的配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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:p="http://www.springframework.org/schema/p"
  xmlns:mongo="http://www.springframework.org/schema/data/mongo"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/data/mongo
      http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
 
  <!-- spring連接mongodb數(shù)據(jù)庫(kù)的配置 -->
  <mongo:mongo-client host="192.168.0.201" port="27017" credentials="tuzongxun:123456@mongoTest" id="mongo"
    <mongo:client-options write-concern="SAFE"/> 
  </mongo:mongo-client
 
  <mongo:db-factory id="mongoDbFactory" dbname="mongoTest" mongo-ref="mongo" /> 
 
  <!-- 只要使用這個(gè)調(diào)用相應(yīng)的方法操作 -->
  <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> 
  </bean>  
 
</beans>

與數(shù)據(jù)庫(kù)對(duì)應(yīng)的實(shí)體類:

需要注意的是這里需要實(shí)現(xiàn)序列化的接口并設(shè)置uid的屬性,否則不能在操作中直接把數(shù)據(jù)庫(kù)返回結(jié)果轉(zhuǎn)換成對(duì)象屬性:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package spring_mongo.models;
 
import java.io.Serializable;
 
public class UserModel implements Serializable {
 
  private static final long serialVersionUID = 1L;
  private String userName;
  private String password;
 
  public UserModel(String userName, String password) {
    super();
    this.userName = userName;
    this.password = password;
  }
 
  public String getUserName() {
    return userName;
  }
 
  public void setUserName(String userName) {
    this.userName = userName;
  }
 
  public String getPassword() {
    return password;
  }
 
  public void setPassword(String password) {
    this.password = password;
  }
 
}

根據(jù)spring配置獲取操作mongodb的MongoTemplete,需要實(shí)現(xiàn)ApplicationContextAware接口:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package spring_mogo.dao.daoImp;
 
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.data.mongodb.core.MongoTemplate;
 
public abstract class AbstractBaseMongoTemplete implements
    ApplicationContextAware {
 
  protected MongoTemplate mongoTemplate;
 
  /**
   * @Description 根據(jù)配置文件設(shè)置mongoTemplate
   * @param mongoTemplate
   */
  public void setMongoTemplate(MongoTemplate mongoTemplate) {
    this.mongoTemplate = mongoTemplate;
  }
 
  @Override
  public void setApplicationContext(ApplicationContext applicationContext)
      throws BeansException {
    MongoTemplate mongoTemplate = applicationContext.getBean(
        "mongoTemplate", MongoTemplate.class);
    setMongoTemplate(mongoTemplate);
  }
}

操作數(shù)據(jù)庫(kù)的接口以及對(duì)應(yīng)的實(shí)現(xiàn)類:

演示了最基礎(chǔ)的增刪改查,需要注意的地方在于參數(shù)的聲明以及接收返回?cái)?shù)據(jù)時(shí)和實(shí)體類的轉(zhuǎn)換:

(1)接口:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package spring_mogo.dao;
 
import java.util.List;
 
import spring_mongo.models.UserModel;
 
public interface UserDao {
  /**
   * 查詢數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: findAll
   * @param @return
   * @return List<UserModel>
   * @date May 13, 2016 3:07:39 PM
   * @throws
   */
  public List<UserModel> findAll();
 
  /**
   * 新增數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: insertUser
   * @param @param user
   * @return void
   * @date May 13, 2016 3:09:45 PM
   * @throws
   */
  public void insertUser(UserModel user);
 
  /**
   * 刪除數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: removeUser
   * @param @param userName
   * @return void
   * @date May 13, 2016 3:09:55 PM
   * @throws
   */
  public void removeUser(String userName);
 
  /**
   * 修改數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: updateUser
   * @param @param user
   * @return void
   * @date May 13, 2016 3:10:06 PM
   * @throws
   */
  public void updateUser(UserModel user);
 
  /**
   * 按條件查詢
   *
   * @author:tuzongxun
   * @Title: findForRequery
   * @param
   * @return void
   * @date May 13, 2016 3:23:37 PM
   * @throws
   */
  public List<UserModel> findForRequery(String userName);
 
}

(2)實(shí)現(xiàn)類,這里要繼承AbstractBaseMongoTemplete類,從而獲得mongoTemplete進(jìn)行各種操作:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package spring_mogo.dao.daoImp;
 
import java.util.List;
 
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
 
import spring_mogo.dao.UserDao;
import spring_mongo.models.UserModel;
 
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
 
@Component("UserDaoImp")
public class UserDaoImp extends AbstractBaseMongoTemplete implements UserDao {
 
  /**
   * 查詢所有數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: findAll
   * @Description: TODO
   * @param @return
   * @date May 13, 2016 3:10:29 PM
   * @throws
   */
  @Override
  public List<UserModel> findAll() {
    // 需要設(shè)置集合對(duì)應(yīng)的尸體類和相應(yīng)的集合名,從而查詢結(jié)果直接映射
    List<UserModel> userList = mongoTemplate.findAll(UserModel.class,
        "user");
    return userList;
  }
 
  /**
   * 新增數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: insertUser
   * @Description: TODO
   * @param @param user
   * @date May 13, 2016 3:10:45 PM
   * @throws
   */
  @Override
  public void insertUser(UserModel user) {
    // 設(shè)置需要插入到數(shù)據(jù)庫(kù)的文檔對(duì)象
    DBObject object = new BasicDBObject();
    object.put("userName", user.getUserName());
    object.put("password", user.getPassword());
    mongoTemplate.insert(object, "user");
  }
 
  /**
   * 按條件刪除數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: removeUser
   * @Description: TODO
   * @param @param userName
   * @date May 13, 2016 3:11:01 PM
   * @throws
   */
  @Override
  public void removeUser(String userName) {
    // 設(shè)置刪除條件,如果條件內(nèi)容為空則刪除所有
    Query query = new Query();
    Criteria criteria = new Criteria("userName");
    criteria.is(userName);
    query.addCriteria(criteria);
    mongoTemplate.remove(query, "user");
  }
 
  /**
   * 修改數(shù)據(jù)
   *
   * @author:tuzongxun
   * @Title: updateUser
   * @Description: TODO
   * @param @param user
   * @date May 13, 2016 3:11:12 PM
   * @throws
   */
  @Override
  public void updateUser(UserModel user) {
    // 設(shè)置修改條件
    Query query = new Query();
    Criteria criteria = new Criteria("userName");
    criteria.is(user.getUserName());
    query.addCriteria(criteria);
    // 設(shè)置修改內(nèi)容
    Update update = Update.update("password", user.getPassword());
    // 參數(shù):查詢條件,更改結(jié)果,集合名
    mongoTemplate.updateFirst(query, update, "user");
  }
 
  /**
   * 根據(jù)條件查詢
   *
   * @author:tuzongxun
   * @Title: findForRequery
   * @Description: TODO
   * @param @param userName
   * @date May 13, 2016 4:08:15 PM
   * @throws
   */
  @Override
  public List<UserModel> findForRequery(String userName) {
    Query query = new Query();
    Criteria criteria = new Criteria("userName");
    criteria.is(userName);
    query.addCriteria(criteria);
    // 查詢條件,集合對(duì)應(yīng)的實(shí)體類,集合名
    List<UserModel> userList = mongoTemplate.find(query, UserModel.class,
        "user");
    return userList;
  }
 
}

測(cè)試類:

為了驗(yàn)證以上代碼和配置的正確性,測(cè)試類代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package spring_mongo.test;
 
import java.util.List;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
import spring_mogo.dao.UserDao;
import spring_mongo.models.UserModel;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml" })
public class mongoTest {
 
  @Autowired
  private UserDao userDao;
 
  /**
   * 查詢測(cè)試
   *
   * @author:tuzongxun
   * @Title: monFindTest
   * @param
   * @return void
   * @date May 13, 2016 3:27:51 PM
   * @throws
   */
  @Test
  public void monFindTest() {
    List<UserModel> userModels = userDao.findAll();
    if (userModels != null && userModels.size() > 0) {
      for (UserModel user : userModels) {
        System.out.println(user.getUserName() + ":"
            + user.getPassword());
      }
    }
  }
 
  /**
   * 插入數(shù)據(jù)測(cè)試
   *
   * @author:tuzongxun
   * @Title: monInsertTest
   * @param
   * @return void
   * @date May 13, 2016 3:27:38 PM
   * @throws
   */
  @Test
  public void monInsertTest() {
    UserModel user = new UserModel("test111", "123456");
    userDao.insertUser(user);
    this.monFindTest();
  }
 
  /**
   * 刪除測(cè)試
   *
   * @author:tuzongxun
   * @Title: monRemoveTest
   * @param
   * @return void
   * @date May 13, 2016 3:28:06 PM
   * @throws
   */
  @Test
  public void monRemoveTest() {
    String userName = "test111";
    userDao.removeUser(userName);
    this.monFindTest();
  }
 
  /**
   * 測(cè)試修改
   *
   * @author:tuzongxun
   * @Title: monUpdateTest
   * @param
   * @return void
   * @date May 13, 2016 3:50:08 PM
   * @throws
   */
  @Test
  public void monUpdateTest() {
    UserModel user = new UserModel("test111", "test");
    userDao.updateUser(user);
    this.monFindTest();
  }
 
  /**
   * 按條件查詢
   *
   * @author:tuzongxun
   * @Title: monFindForRuq
   * @param
   * @return void
   * @date May 13, 2016 4:10:53 PM
   * @throws
   */
  @Test
  public void monFindForRuq() {
    String userName = "test111";
    List<UserModel> userModels = userDao.findForRequery(userName);
    if (userModels != null && userModels.size() > 0) {
      for (UserModel user : userModels) {
        System.out.println(user.getUserName() + ":"
            + user.getPassword());
      }
    }
  }
 
}

后期補(bǔ)上demo下載地址:demo

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/tuzongxun/article/details/51404529

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品精品国产自在久久高清 | 午夜一级影院 | 亚洲国产成人综合 | 俺去啦最新官网 | 99久女女精品视频在线观看 | 欧美日韩亚洲成人 | aⅴ免费视频 | 2021国产麻豆剧传媒剧情最新 | 国产欧美日韩精品在线 | 国产亚洲精品久久yy5099 | 亚洲国产精品牛在线 | 久久两性视频 | 桃乃木香奈作品在线 | 国内偷拍第一页 | 好大好深受不了了快进来 | asspics大尿chinese| 肉车各种play文r | 色综合网天天综合色中文男男 | 88av免费观看| 东北恋哥在线播放免费播放 | 男男gaygays黑人 | 日本韩国在线 | 成人日批视频 | 国产高清视频网站 | 金莲你下面好紧夹得我好爽 | 91精品国产91久久久久久 | 希望影院高清免费观看视频 | 女人狂吮男人命根gif视频 | 日韩欧美中文字幕一区 | 成人午夜爽爽爽免费视频 | 精品在线看 | 高h全肉np触手 | 加勒比福利 | 操人网| 久久久免费热线精品频 | 日韩在线视频一区二区三区 | 国产99视频精品免费视频7 | 日本国产一区二区三区 | 欧美影院一区二区三区 | 天天操天天射天天色 | 亚洲一级片在线播放 |