mongodb的安装在官网上下载,不做说明
这里说下集成代码:
1 先上pom依赖:
org.springframework.boot
spring-boot-starter-data-mongodb
2 配置文件
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=mwdb
#spring.data.mongodb.password=root
#spring.data.mongodb.username=123456
3 在上controller 代码
A 直接使用mongoTemplate
@Autowired
private MongoTemplate mongoTemplate;
private static final String collectionName = "User";
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ResponseBody
public ResultObject insert(@ModelAttribute User user) throws Exception {
this.mongoTemplate.insert(user);
return new ResultObject(HttpServletResponse.SC_OK);}
@RequestMapping("/delete")
@ResponseBody
public ResultObject delete(@RequestParam("userId") String userId) throws Exception {
Query query = Query.query(Criteria.where("userId").is(userId));
this.mongoTemplate.remove(query, collectionName);
return new ResultObject(HttpServletResponse.SC_OK);
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ResponseBody
public ResultObject update(@ModelAttribute User user) throws Exception {
Query query = Query.query(Criteria.where("userId").is(user.getUserId()));
Update update = new Update();
update.set("age", user.getAge());
update.set("name", user.getName());
update.set("email", user.getEmail());
this.mongoTemplate.updateFirst(query, update, collectionName);
return new ResultObject(HttpServletResponse.SC_OK);
}
@RequestMapping("/query")
@ResponseBody
public ResultObject query() throws Exception {
Query query = Query.query(Criteria.where("status").is(1));
List users = this.mongoTemplate.find(query, User.class);
return new ResultObject(HttpServletResponse.SC_OK, users);
}
实体类需要注意的是
@Document(collection="User")
public class User {
}
上述描述了springboot 集成mongodb的基本操作;
postman模拟请求
1、新增URL:http://localhost:8080/pro/user/insert?userId=001&name=David&uclass=C&email=xxxoo@sina.com&age=44&status=1
2、删除URL:http://localhost:8080/pro/user/delete?userId=001
3、修改URL:http://localhost:8080/pro/user/update?userId=014&name=Tom&uclass=C&email=xxxoo@sina.com&age=65&status=2
4、查询URL:http://localhost:8080/pro/user/query
上述操作省略了业务层的接口,有需要的可以私信留言交流,
主要关键的方法也可以这样来做:
增mongoTemplate.save(user);
删mongoTemplate.remove(query,UserEntity.class);
改Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
//更新查询返回结果集的第一条 WriteResult result =mongoTemplate.updateFirst(query,update,UserEntity.class);
查Query query=new Query(Criteria.where("userName").is(userName));
UserEntity user = mongoTemplate.findOne(query , UserEntity.class);
B 使用实体相关的mongoRepository接口
如:
@Service
public interface UserRepository extends MongoRepository {
public User findByName(String name);
}这种操作也会简化用户的编码;
很简单的demo,下面在加上分页查询的操作:
Query query = new Query();
if (!Utils.isEmpty(status)){
query.addCriteria(Criteria.where("status").regex("^" +status + "$", "i"));
}
if (beginTime==null||endTime==null){
if (beginTime!=null){
query.addCriteria(Criteria.where("updateTime").gte(beginTime));
}
if (endTime!=null){
query.addCriteria(Criteria.where("updateTime").lte(endTime));
}
}else {
query.addCriteria(Criteria.where("updateTime").gte(beginTime).lte(endTime));
}
query.with(new Sort(Sort.Direction.DESC, "updateTime"));
query.with(PageRequest.of(pageNo-1,pageSize));
Long count = mongoTemplate.count(query, User.class);
List userList = this.getMongoTemplate().find(query,User.class);
![de15a544a0e291c972f9fb802ea8af97.png](https://i-blog.csdnimg.cn/blog_migrate/43924f63c9740e0e80b967f60f334c24.jpeg)
高并发请求优化