1.首先创建项目,目录如下:
application.yml配置
2.pom.xml引入mongodb依赖和application.yml配置:
<!-- mongodb依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
3.创建实体类User,如下所示,注意@Document(collection = “user”)注解,用于标记本实体类对应的mongodb集合,本实例为user集合。
package com.ggeit.pay.entity;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "user")
public class User {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
4.创建UserServiceInf接口
package com.ggeit.pay.inf;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.ggeit.pay.entity.User;
public interface UserServiceInf {
void updateUserbyname(String name, String age);
void insert(Map<String, Object> reqmap, String collectionName);
String find();
}
5.创建接口实现类,使用MongoTemplate 对象中的增删改查操作
@Service
public class UserServiceImpl implements UserServiceInf {
private final static Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
@Autowired
private MongoTemplate mongotemplate;
/**
* 封装mongotemplate中的insert方法
*/
@Override
public void insert(Map<String,Object> reqmap,String collectionName) {
// TODO Auto-generated method stub
// User user = new User();
// user.setName(name);
// user.setAge(age);
// logger.info("user = " + user);
mongotemplate.insert(reqmap, collectionName);
}
/**
* upsert更新,上传参数为query查询条件,update更新内容,collectionName为String类型
*/
@Override
public void updateUserbyname(String name,String age) {
// TODO Auto-generated method stub
Query query = new Query();
query.addCriteria(Criteria.where("name").is(name));
Update update = Update.update("age", age);
mongotemplate.upsert(query, update, "user");
}
@Override
public String find() {
// TODO Auto-generated method stub
//Query query = new Query();
//query.addCriteria(Criteria.where("name").is("wshy"));
//query.addCriteria(Criteria.where("age").is("12222222222"));
Collection<User> findList = mongotemplate.findAll( User.class,"user");
return new Gson().toJson(findList);
}
}
6.创建Controller代码
@RestController
@RequestMapping("/user")
public class UserController {
private final static Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserServiceImpl userserviceimpl;
/**
* MongoDB insert
* @param request
* @param response
* @throws Exception
*/
@RequestMapping(value = "/insertuser", method = RequestMethod.GET)
public void insert(HttpServletRequest request, HttpServletResponse response,String name,String age) throws Exception {
Map<String ,Object> reqmap = new HashMap<String,Object>();
reqmap.put("name", name);
reqmap.put("age", age);
String collectionName = "user";//插入哪个集合(表)
//调用insert接口
userserviceimpl.insert(reqmap,collectionName);
logger.info("插入成功!");
}
/**
* MongoDB update
* @param req
* @param resp
*/
@RequestMapping(value = "/update", method = RequestMethod.GET)
public void update(HttpServletRequest req,HttpResponse resp,String name,String age) {
userserviceimpl.updateUserbyname(name,age);
logger.info("更新成功!");
}
/**
* MongoDB findall
* @param req
* @param resp
*/
@RequestMapping(value = "/findall", method = RequestMethod.GET)
public String findall(HttpServletRequest req,HttpResponse resp) {
String str = userserviceimpl.find();
//查出来的数据要转成json格式,不然会显示错误
logger.info("查询成功:" + str);
return str;
}
}
insert和update在调试时未出现错误,在调试查询时,返回的数据为list,内容总是显示为class对象,需利用new Gson().toJson( )
进行转化。
7.测试时结果insert和update
find操作
最近刚开始玩Git版本工具,并在GitHub上传了源码,有兴趣可以下载: