导包:
<!--MongoDB核心包-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.11.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.7.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</exclusion>
</exclusions>
</dependency>
配置文件:
1、mongodb-config.properties
mongo.host=***.***.***.***
mongo.port=20000
mongo.username=root
mongo.password=******
mongo.database=test
mongo.connectionsPerHost=8
mongo.maxWaitThread=4
mongo.connectTimeout=10000
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.socketKeepAlive= true
mongo.socketTimeout=1500
mongo.slaveOk=true
mongo.threadsAllowedToBlockForConnectionMultiplier=4
2、spring-mongodb.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/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
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">
<context:component-scan base-package="com.ltmonitor.web.controller"/>
<!--1 .加载mongodb的属性配置文件 -->
<context:property-placeholder location="classpath:mongodb-config.properties" ignore-unresolvable="true"/>
<!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo-->
<mongo:mongo id="mongo-client" host="${mongo.host}" port="${mongo.port}">
<mongo:options connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}"
write-number="1" write-timeout="0" write-fsync="true"/>
</mongo:mongo>
<mongo:db-factory id="mongoFactory" dbname="${mongo.database}" username="${mongo.username}"
password="${mongo.password}" mongo-ref="mongo-client" />
<!-- 配置mongodb的文档不包含_class值 -->
<bean id="mappingContext"
class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />
<bean id="defaultMongoTypeMapper"
class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
<constructor-arg name="typeKey"><null/></constructor-arg>
</bean>
<bean id="mappingMongoConverter"
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
<constructor-arg name="mongoDbFactory" ref="mongoFactory" />
<constructor-arg name="mappingContext" ref="mappingContext" />
<property name="typeMapper" ref="defaultMongoTypeMapper" />
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoFactory"/>
<constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>
</beans>
测试案例
1、TestMongodbAction.java
@Controller
@RequestMapping("/testMongodb")
public class TestMongodbAction extends GenericAction{
@Autowired
private IUserMongoService userMongoService;
@RequestMapping(value = "/get",method = RequestMethod.GET)
public Object get(String name){
name ="zt";
UserMongodb user = userMongoService.get(name);
return user;
}
@RequestMapping(value = "/getLists",method = RequestMethod.GET)
public List<UserMongodb> getLists(){
UserMongodb user = new UserMongodb();
user.setName("zt");
user.setAvatar("http03");
List<UserMongodb> users = userMongoService.getLists(user);
return users;
}
@RequestMapping(value = "/add",method = RequestMethod.GET)
public Object add(){
UserMongodb user = new UserMongodb();
user.setName("123");
user.setAvatar("http");
userMongoService.add(user);
return user;
}
@RequestMapping(value = "/update",method = RequestMethod.GET)
public Object update(){
UserMongodb user = new UserMongodb();
user.setName("123");
user.setAvatar("http1");
userMongoService.update(user);
return user;
}
@RequestMapping(value = "/delete",method = RequestMethod.GET)
public void delete(String id){
userMongoService.delete(id);
}
}
2、IUserMongoService.java
public interface IUserMongoService {
void add(UserMongodb user);
void insert(List<UserMongodb> user);
UserMongodb get(String name);
UserMongodb update(UserMongodb user);
void delete(String id);
List<UserMongodb> getLists(UserMongodb user);
}
3、UserMongoService.java
@Service
public class UserMongoService implements IUserMongoService {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public void add(UserMongodb user) {
mongoTemplate.save(user);
}
@Override
public UserMongodb get(String name) {
Query sql = new Query(Criteria.where("name").is(name));
return mongoTemplate.findOne(sql,UserMongodb.class);
}
@Override
public List<UserMongodb> getLists(UserMongodb user) {
Query sql = new Query(Criteria.where("name").is(user.getName()).where("avatar").is(user.getAvatar()));
List<UserMongodb> mapList = mongoTemplate.find(sql, UserMongodb.class);
return mapList;
}
@Override
public void insert(List<UserMongodb> user) {
mongoTemplate.insert(user,UserMongodb.class);
}
@Override
public UserMongodb update(UserMongodb userMongodb) {
Query query = new Query(Criteria.where("name").is(userMongodb.getName()));
Update update = new Update();
//Update update = Update.update("avatar",userMongodb.getAvatar());
update.set("avatar",userMongodb.getAvatar());
update.set("mobile",userMongodb.getMobile());
//更新字段 只更新一个
mongoTemplate.updateFirst(query,update,UserMongodb.class);
return userMongodb;
}
@Override
public void delete(String id) {
Query query = new Query(new Criteria("_id").is(id));
try {
//mongoTemplate.findAllAndRemove(query,UserMongodb.class);
mongoTemplate.remove(query,UserMongodb.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4、UserMongodb.java
@Document
public class UserMongodb implements Serializable{
private String id;
private String mobile;
private String name;
private String avatar;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
}