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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 使用spring連接及操作mongodb3.0實例

使用spring連接及操作mongodb3.0實例

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

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

前邊有一篇記錄過不使用spring,直接在java代碼中連接和操作mongodb數據庫,這里就緊隨其后記錄一下使用spring的情況下,在java中簡單操作mongodb。

maven導包配置:

因為涉及了sping以及springmvc,因此也需要導入它們相關的包:

?
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基礎配置:

主要是開啟注解掃描等:

?
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">
 
  <!-- 自動掃描(自動注入) -->
  <context:component-scan base-package="spring_mogo.dao.daoImp" />
 
  <!-- 導入mongodb的配置文件 -->
  <import resource="spring-mongodb305.xml" />
 
  <!-- 開啟注解 -->
  <context:annotation-config />
 
</beans>

spring連接mongodb以及建立相關工廠的配置:

?
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數據庫的配置 -->
  <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" /> 
 
  <!-- 只要使用這個調用相應的方法操作 -->
  <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> 
  </bean>  
 
</beans>

與數據庫對應的實體類:

需要注意的是這里需要實現序列化的接口并設置uid的屬性,否則不能在操作中直接把數據庫返回結果轉換成對象屬性:

?
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;
  }
 
}

根據spring配置獲取操作mongodb的MongoTemplete,需要實現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 根據配置文件設置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);
  }
}

操作數據庫的接口以及對應的實現類:

演示了最基礎的增刪改查,需要注意的地方在于參數的聲明以及接收返回數據時和實體類的轉換:

(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 {
  /**
   * 查詢數據
   *
   * @author:tuzongxun
   * @Title: findAll
   * @param @return
   * @return List<UserModel>
   * @date May 13, 2016 3:07:39 PM
   * @throws
   */
  public List<UserModel> findAll();
 
  /**
   * 新增數據
   *
   * @author:tuzongxun
   * @Title: insertUser
   * @param @param user
   * @return void
   * @date May 13, 2016 3:09:45 PM
   * @throws
   */
  public void insertUser(UserModel user);
 
  /**
   * 刪除數據
   *
   * @author:tuzongxun
   * @Title: removeUser
   * @param @param userName
   * @return void
   * @date May 13, 2016 3:09:55 PM
   * @throws
   */
  public void removeUser(String userName);
 
  /**
   * 修改數據
   *
   * @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)實現類,這里要繼承AbstractBaseMongoTemplete類,從而獲得mongoTemplete進行各種操作:

?
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 {
 
  /**
   * 查詢所有數據
   *
   * @author:tuzongxun
   * @Title: findAll
   * @Description: TODO
   * @param @return
   * @date May 13, 2016 3:10:29 PM
   * @throws
   */
  @Override
  public List<UserModel> findAll() {
    // 需要設置集合對應的尸體類和相應的集合名,從而查詢結果直接映射
    List<UserModel> userList = mongoTemplate.findAll(UserModel.class,
        "user");
    return userList;
  }
 
  /**
   * 新增數據
   *
   * @author:tuzongxun
   * @Title: insertUser
   * @Description: TODO
   * @param @param user
   * @date May 13, 2016 3:10:45 PM
   * @throws
   */
  @Override
  public void insertUser(UserModel user) {
    // 設置需要插入到數據庫的文檔對象
    DBObject object = new BasicDBObject();
    object.put("userName", user.getUserName());
    object.put("password", user.getPassword());
    mongoTemplate.insert(object, "user");
  }
 
  /**
   * 按條件刪除數據
   *
   * @author:tuzongxun
   * @Title: removeUser
   * @Description: TODO
   * @param @param userName
   * @date May 13, 2016 3:11:01 PM
   * @throws
   */
  @Override
  public void removeUser(String userName) {
    // 設置刪除條件,如果條件內容為空則刪除所有
    Query query = new Query();
    Criteria criteria = new Criteria("userName");
    criteria.is(userName);
    query.addCriteria(criteria);
    mongoTemplate.remove(query, "user");
  }
 
  /**
   * 修改數據
   *
   * @author:tuzongxun
   * @Title: updateUser
   * @Description: TODO
   * @param @param user
   * @date May 13, 2016 3:11:12 PM
   * @throws
   */
  @Override
  public void updateUser(UserModel user) {
    // 設置修改條件
    Query query = new Query();
    Criteria criteria = new Criteria("userName");
    criteria.is(user.getUserName());
    query.addCriteria(criteria);
    // 設置修改內容
    Update update = Update.update("password", user.getPassword());
    // 參數:查詢條件,更改結果,集合名
    mongoTemplate.updateFirst(query, update, "user");
  }
 
  /**
   * 根據條件查詢
   *
   * @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);
    // 查詢條件,集合對應的實體類,集合名
    List<UserModel> userList = mongoTemplate.find(query, UserModel.class,
        "user");
    return userList;
  }
 
}

測試類:

為了驗證以上代碼和配置的正確性,測試類代碼如下:

?
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;
 
  /**
   * 查詢測試
   *
   * @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());
      }
    }
  }
 
  /**
   * 插入數據測試
   *
   * @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();
  }
 
  /**
   * 刪除測試
   *
   * @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();
  }
 
  /**
   * 測試修改
   *
   * @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());
      }
    }
  }
 
}

后期補上demo下載地址:demo

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天中文 | 俺去啦最新地址 | 国产精品成人在线播放 | 99热最新| 欧美日韩在线观看精品 | 99视频在线观看视频一区 | 奇米777四色精品综合影院 | www一区二区 | 无遮免费网站在线入口 | chinese男同志同性twink | 亚州人成网在线播放 | 人与动人物人a级特片 | 亚洲精品国产自在现线最新 | 国产原创精品 | 女教师波多野结衣高清在线 | 亚洲精品国产成人99久久 | 久草色视频 | www.久久99| 午夜办公室在线观看高清电影 | 全黄h全肉细节文在线观看 全彩成人18h漫画 | 亚洲国产成人精品 | 543精品视频 | 韩国甜性涩爱免费观看 | 成年美女黄网站色视频大全免费 | 1024亚洲天堂 | 国产极品麻豆91在线 | 教室里的激情电影 | futa巨大好爽好长 | 日本色吧| 亚洲天堂视频在线免费观看 | 亚洲国产精品久久精品怡红院 | 视频在线精品 | 国产亚洲精品第一综合另类 | 91精品啪在线观看国产老湿机 | 成人免费播放 | 青草视频网址 | 兽皇日本 | 国产爱啪啪 | 美女脱了内裤打开腿让人羞羞软件 | 亚洲福利电影一区二区? | 欧美日韩国产一区二区三区欧 |