MongoDB學習筆記之 第4章 MongoDB整合Spring
阿新 • • 發佈:2019-02-13
第4章 MongoDB整合Spring
(黎明你好原創作品,轉載請註明)
4.1 建立maven專案
4.1.1 repositories
建立maven專案,其中repositories使用spring的maven庫:
Java程式碼- <repositories>
- <repository>
- <id>central</id>
- <name>Maven Central</name>
-
<url>http://repo1.maven.org/maven2/</url>
- </repository>
- <repository>
- <id>spring-release</id>
- <name>Spring Maven Release Repository</name>
- <url>http://repo.springsource.org/libs-release</url>
- </repository>
- <repository>
-
<id>atlassian-m2-repository</id>
- <url>https://m2proxy.atlassian.com/repository/public</url>
- </repository>
- </repositories>
4.1.2 Dependencies
使用到的jar包:
Java程式碼- <dependencies>
- <dependency>
- <groupId>javax.servlet</groupId>
-
<artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <type>jar</type>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.6.1</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.5</version>
- <type>jar</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongo-java-driver</artifactId>
- <version>2.10.1</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-mongodb</artifactId>
- <version>1.2.1.RELEASE</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-mongodb-cross-store</artifactId>
- <version>1.2.1.RELEASE</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-mongodb-log4j</artifactId>
- <version>1.2.1.RELEASE</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- </dependencies>
4.2 新增spring配置檔案
spring的配置檔案applicationContext.xml
Java程式碼- <?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/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-1.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <context:component-scan base-package="liming.mongodb.example" />
- <mongo:mongo host="127.0.0.1" port="27017" />
- <!-- mongo的工廠,通過它來取得mongo例項,dbname為mongodb的資料庫名,沒有的話會自動建立 -->
- <mongo:db-factory dbname="student" mongo-ref="mongo" />
- <!-- mongodb的主要操作物件,所有對mongodb的增刪改查的操作都是通過它完成 -->
- <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
- <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
- </bean>
- <!-- 對映轉換器,掃描back-package目錄下的檔案,根據註釋,把它們作為mongodb的一個collection的對映 -->
- <mongo:mapping-converter base-package="climing.mongodb.example.data.model" />
- <!-- mongodb bean的倉庫目錄,會自動掃描擴充套件了MongoRepository介面的介面進行注入 -->
- <mongo:repositories base-package="liming.mongodb.example.data.impl" />
- <context:annotation-config />
- </beans>
4.3 增刪改查
Userl實現的增刪改查:
4.3.1UserEntity
Java程式碼- package liming.mongodb.example.data.model;
- import java.util.Date;
- import org.springframework.data.annotation.Id;
- import org.springframework.data.mongodb.core.mapping.Document;
- @Document(collection = "user")
- public class UserEntity {
- @Id
- private String id;
- private NameEntity name;
- private int age;
- private int works;
- private Date birth;
- private String password;
- private String regionName;
- private String[] special;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public NameEntity getName() {
- return name;
- }
- public void setName(NameEntity name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public int getWorks() {
- return works;
- }
- public void setWorks(int works) {
- this.works = works;
- }
- public Date getBirth() {
- return birth;
- }
- public void setBirth(Date birth) {
- this.birth = birth;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getRegionName() {
- return regionName;
- }
- public void setRegionName(String regionName) {
- this.regionName = regionName;
- }
- public String[] getSpecial() {
- return special;
- }
- public void setSpecial(String[] special) {
- this.special = special;
- }
- }
4.3.2 NameEntity
Java程式碼- package liming.mongodb.example.data.model;
- public class NameEntity {
- private String username;
- private String nickname;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getNickname() {
- return nickname;
- }
- public void setNickname(String nickname) {
- this.nickname = nickname;
- }
- }
4.3.3 UserDao
Java程式碼- package liming.mongodb.example.data;
- import java.util.List;
- import liming.mongodb.example.data.model.UserEntity;
- import org.springframework.transaction.annotation.Transactional;
- @Transactional
- public interface UserDao {
- public abstract void _test();
- public abstract void createCollection();
- public abstract List<UserEntity> findList(int skip, int limit);
- public abstract List<UserEntity> findListByAge(int age);
- public abstract UserEntity findOne(String id);
- public abstract UserEntity findOneByUsername(String username);
- public abstract void insert(UserEntity entity);
- public abstract void update(UserEntity entity);
- }
4.3.4 UserDaoImpl
Java程式碼- package liming.mongodb.example.data.impl;
- import java.util.List;
- import java.util.Set;
- import liming.mongodb.example.data.UserDao;
- import liming.mongodb.example.data.model.UserEntity;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.domain.Sort;
- import org.springframework.data.domain.Sort.Direction;
- import org.springframework.data.domain.Sort.Order;
- import org.springframework.data.mongodb.core.MongoTemplate;
- 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.Repository;
- import com.mongodb.DB;
- @Repository
- public class UserDaoImpl implements UserDao {
- public static final Logger logger = LoggerFactory.getLogger(UserDaoImpl.class);
- @Autowired
- private MongoTemplate mongoTemplate;
- @Override
- public void _test() {
- Set<String> colls = this.mongoTemplate.getCollectionNames();
- for (String coll : colls) {
- logger.info("CollectionName=" + coll);
- }
- DB db = this.mongoTemplate.getDb();
- logger.info("db=" + db.toString());
- }
- @Override
- public void createCollection() { <