国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 13:26:42
字體:
來源:轉載
供稿:網友

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

maven導包配置:

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

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

主要是開啟注解掃描等:

<?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以及建立相關工廠的配置:

<?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的屬性,否則不能在操作中直接把數據庫返回結果轉換成對象屬性:

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接口:

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)接口:

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進行各種操作:

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

測試類:

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林口县| 武邑县| 高陵县| 环江| 恭城| 峡江县| 通州区| 新乐市| 宜黄县| 津南区| 双桥区| 大同市| 东乌| 离岛区| 大化| 即墨市| 游戏| 登封市| 乌兰浩特市| 丹巴县| 平乡县| 西平县| 新龙县| 定州市| 江陵县| 义马市| 金堂县| 洛川县| 拉萨市| 滕州市| 田阳县| 峡江县| 永年县| 柳江县| 寿宁县| 西青区| 吉安市| 伊宁县| 西城区| 永康市| 兴城市|