ThisLX 2020-02-15
在前面搭建的环境上加上mongodb配置文件,pom.xml增加mongo相关依赖,增加一些代码即可搭建成功。
1、增加mongdb-context.xml和mongodb.properties
mongdb-context.xml
<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd"> <!--加载MongoDB属性配置文件--> <context:property-placeholder location="classpath*:mongodb.properties"/> <!--mongodb数据库配置--> <mongo:mongo-client replica-set="${mongo.host}" id="mongo"> <mongo:client-options connections-per-host="${mongo.connectionsPerHost}" threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" max-wait-time="${mongo.maxWaitTime}" socket-timeout="${mongo.socketTimeout}" connect-timeout="${mongo.connectTimeout}"/> </mongo:mongo-client> <!--工厂获取mongo实例--> <mongo:db-factory id="mongoDbFactory" dbname="ivydb" mongo-ref="mongo"/> <!--创建mongoTemplate--> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> </bean> <!--mongodb bean的仓库目录,会自动扫描扩展MongoRepository接口到接口进行注入--> <mongo:repositories base-package="com.example.ivy"/> </beans>
mongodb.properties
#mongoDB连接配置 mongo.host=127.0.0.1:27017 mongo.connectionsPerHost=8 mongo.threadsAllowedToBlockForConnectionMultiplier=4 #连接超时时间 mongo.connectTimeout=1000 #等待时间 mongo.maxWaitTime=1500 #Socket超时时间 mongo.socketTimeout=1500
2、修改applicationContext.xml,增加mongodb相关配置
1 <!--引入MongoDB配置文件--> 2 <import resource="mongodb-context.xml"/>
3、在pom.xml文件中增加mongodb相关依赖
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.0.1.RELEASE</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.11.2</version> </dependency>
4、添加实体User
package com.example.ivy.entity; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "user") public class User { private int id; private String name; private String password; public User() { } public User(int id, String name, String password) { this.id = id; this.name = name; this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public String toString() { return "User{" + "id=" + id + ", name=‘" + name + ‘\‘‘ + ", password=‘" + password + ‘\‘‘ + ‘}‘; } }
5、添加DAO
package com.example.ivy.dao.impl; import com.example.ivy.entity.User; import com.example.ivy.dao.IBaseDao; import org.springframework.beans.factory.annotation.Autowired; 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.Component; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service(value = "iBaseDaoImpl") public class IBaseDaoImpl implements IBaseDao { //MongoTemplate是数据库和代码之间的接口,对数据库的操作都在它里面 @Resource private MongoTemplate mongoTemplate; @Override public List<User> findAll() { return mongoTemplate.findAll(User.class,"user"); } @Override public User findOne(int id) { Query query = new Query(); Criteria criteria = Criteria.where("_id").is(id); query.addCriteria(criteria); return mongoTemplate.findOne(query,User.class); } @Override public void update(User user) { Update update = new Update(); Query query = new Query(); update.set("name", user.getName()); update.set("password", user.getPassword()); mongoTemplate.updateFirst(query.addCriteria(Criteria.where("_id").is(user.getId())), update, User.class); } @Override public void delete(int id) { mongoTemplate.remove(Query.query(Criteria.where("_id").is(id)), User.class); } @Override public void add(User user) { mongoTemplate.insert(user, "user"); } @Override public void save(User user) { mongoTemplate.save(user); } }
6、增加测试,查看环境是否搭建成功
package com.example.ivy.dao.impl; import com.example.ivy.dao.IBaseDao; import com.example.ivy.entity.User; 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 javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:applicationContext.xml","classpath:mongodb-context.xml"}) public class IBaseDaoImplTest { @Resource private IBaseDaoImpl baseDao ; @Test public void testMongo(){ for (int i = 0; i < 10; i++) { User user = new User(i,"李丹" + i,"123"); baseDao.save(user); } } @Test public void findAll() { List<User> users = new ArrayList<>(); users = baseDao.findAll(); for (User user : users) { System.out.println(user.toString()); } } @Test public void findOne() { User user = new User(); user = baseDao.findOne(2); System.out.println(user.toString()); } @Test public void update() { User user = new User(7,"七宝","mamababa"); baseDao.update(user); System.out.println(baseDao.findOne(7).toString()); } @Test public void delete() { baseDao.delete(5); if (null == baseDao.findOne(5)){ System.out.println("success"); } } @Test public void add() { User user = new User(15,"ivy","ivy"); baseDao.add(user); System.out.println(baseDao.findOne(15).toString()); } }
这些只是很简单的配置,可以有更高级更简洁的配置进行搭建。
这个项目可以完全在本地跑起来,不需要该任何配置。