spring整合mongodb
加入pom依赖
- pom.xml
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
引入placeholder
application-cache-mongodb.xml
- application-cache-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/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">
<mongo:mongo host="${mongodb.host}" port="${mongodb.port}" />
<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory dbname="record" 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="com.gxx.record.base.vo" />
</beans>
mongodb.properties
Student.java
- Student.java
package com.gxx.record.base.vo;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* <dl>
* <dt><b>Title:</b></dt>
* <dd>
* mongodb学生实体
* </dd>
* <dt><b>Description:</b></dt>
* <dd>
* <p>none
* </dd>
* </dl>
*
* @author Administrator
* @version 1.0, 2015年7月27日
* @since record
*
*/
@Document(collection="student")
public class Student {
@Id
private String id;
private String name;
private Friend friend;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Friend getFriend() {
return friend;
}
public void setFriend(Friend friend) {
this.friend = friend;
}
}
Friend.java
- Friend.java
package com.gxx.record.base.vo;
/**
* <dl>
* <dt><b>Title:</b></dt>
* <dd>
* mongodb朋友实体
* </dd>
* <dt><b>Description:</b></dt>
* <dd>
* <p>none
* </dd>
* </dl>
*
* @author Administrator
* @version 1.0, 2015年7月27日
* @since record
*
*/
public class Friend {
String name;
boolean sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
}
MongodbDto.java
- MongodbDto.java
package com.gxx.record.dto;
/**
* <dl>
* <dt><b>Title:</b></dt>
* <dd>
* mongodb传输对象
* </dd>
* <dt><b>Description:</b></dt>
* <dd>
* <p>none
* </dd>
* </dl>
*
* @author Administrator
* @version 1.0, 2015年7月27日
* @since record
*
*/
public class MongodbDto extends BaseDto {
private String name;//姓名
private String friendName;//朋友姓名
private boolean friendSex;//朋友性别
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFriendName() {
return friendName;
}
public void setFriendName(String friendName) {
this.friendName = friendName;
}
public boolean isFriendSex() {
return friendSex;
}
public void setFriendSex(boolean friendSex) {
this.friendSex = friendSex;
}
}
MongodbService.java
- MongodbService.java
package com.gxx.record.service;
import com.gxx.record.base.vo.Student;
import com.gxx.record.dto.MongodbDto;
/**
* <dl>
* <dt><b>Title:</b></dt>
* <dd>
* mongodb服务接口</dd>
* <dt><b>Description:</b></dt>
* <dd>
* <p>
* none</dd>
* </dl>
*
* @author Administrator
* @version 1.0, 2015年7月27日
* @since record
*
*/
public interface MongodbService {
/**
* save
*
* @param mongodbDto
* @return
*/
public boolean save(MongodbDto mongodbDto);
/**
* get
*
* @param name
* @return
*/
public Student get(String name);
}
MongodbServiceImpl.java
- MongodbServiceImpl.java
package com.gxx.record.service.impl;
import org.apache.log4j.Logger;
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.stereotype.Service;
import com.gxx.record.base.vo.Friend;
import com.gxx.record.base.vo.Student;
import com.gxx.record.dto.MongodbDto;
import com.gxx.record.service.MongodbService;
/**
* <dl>
* <dt><b>Title:</b></dt>
* <dd>
* mongodb服务实现类
* </dd>
* <dt><b>Description:</b></dt>
* <dd>
* <p>none
* </dd>
* </dl>
*
* @author Administrator
* @version 1.0, 2015年7月23日
* @since record
*
*/
@Service("mongodbService")
public class MongodbServiceImpl implements MongodbService {
/**
* 日志处理器
*/
private final Logger logger = Logger.getLogger(MongodbServiceImpl.class);
@Autowired
private MongoTemplate mongoTemplate;
@Override
public boolean save(MongodbDto mongodbDto) {
Student student = get(mongodbDto.getName());
if(null == student){
student = new Student();
}
student.setName(mongodbDto.getName());
Friend friend = new Friend();
friend.setName(mongodbDto.getFriendName());
friend.setSex(mongodbDto.isFriendSex());
student.setFriend(friend);
mongoTemplate.save(student);
logger.info("插入mongodb完成!");
return false;
}
@Override
public Student get(String name) {
Query query = new Query();
query.addCriteria(new Criteria("name").is(name));
Student student = mongoTemplate.findOne(query, Student.class);
logger.info("查询到mongodb实体:" + student);
return student;
}
}
MongodbController.java
- MongodbController.java
package com.gxx.record.web.mongodb;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gxx.record.base.vo.Student;
import com.gxx.record.dto.MongodbDto;
import com.gxx.record.service.MongodbService;
/**
* <dl>
* <dt><b>Title:</b></dt>
* <dd>
* MongodbController
* </dd>
* <dt><b>Description:</b></dt>
* <dd>
* <p>none
* </dd>
* </dl>
*
* @author Administrator
* @version 1.0, 2015年7月27日
* @since record
*
*/
@Controller
@RequestMapping("/mongodb/")
public class MongodbController {
/**
* 日志处理器
*/
private final Logger logger = Logger.getLogger(MongodbController.class);
@Autowired
private MongodbService mongodbService;
@RequestMapping(value = "/preMongodbFtl", method = RequestMethod.GET)
public String preMongodbFtl() {
return "mongodb/preMongodbFtl";
}
/**
* 设置
* @param request
* @param mongodbDto
* @return
*/
@RequestMapping(value = "/save",produces="application/json")
public @ResponseBody MongodbDto save(HttpServletRequest request, MongodbDto mongodbDto) {
logger.info("设置:姓名=[" + mongodbDto.getName() + "],朋友姓名=[" + mongodbDto.getFriendName() + "],"
+ "朋友性别=[" + mongodbDto.isFriendSex() + "]");
/**
* 1.设置值
*/
mongodbService.save(mongodbDto);
/**
* 2.返回结果
*/
mongodbDto.setSuccess(true);
mongodbDto.setMessage("设置成功!");
return mongodbDto;
}
/**
* 获取值
* @param request
* @param mongodbDto
* @return
*/
@RequestMapping(value = "/get",produces="application/json")
public @ResponseBody MongodbDto get(HttpServletRequest request, MongodbDto mongodbDto) {
logger.info("获取值:姓名=[" + mongodbDto.getName() + "]");
/**
* 1.获取学生
*/
Student student = mongodbService.get(mongodbDto.getName());
/**
* 2.返回结果
*/
if(student == null){
mongodbDto.setSuccess(false);
mongodbDto.setMessage("该姓名[" + mongodbDto.getName() + "]不存在");
} else {
mongodbDto.setSuccess(true);
mongodbDto.setMessage("获取成功");
mongodbDto.setFriendName(student.getFriend().getName());
mongodbDto.setFriendSex(student.getFriend().isSex());
}
return mongodbDto;
}
}
preMongodbFtl.ftl
演示