springboot集成mongo
大家可以关注我的微信公众号“秦川以北” 后续更多精彩实用内容分享
在项目中配置,mongoDB数据库,spring整合
1. 引入pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>
2. 在配置文件中配置mongo库信息
spring:
data:
mongodb:
database: data
username: data
password: 1xxx
host: localhost
port: 27017
3. 编写你要使用的mongo库中某个collection的实体类,我在这里用的是data
@Document(collection = "data")
@Data
public class DataMongoObject implements Serializable {
private static final long serialVersionUID = 1L;
/**
* objectId,无需设值
*/
@Id
private String id;
private String token;
/**
* 数据源名称
*/
private String sourceName;
/**
* 数据源描述
*/
private String sourceDesc;
private String updateTime;
private String dataType = "json";
/**
* 用户数据
*/
private Object data;
}
这个实体类需要实现序列化接口
这里的@Document,说明使用的当前库中的那个collection
下面的@Data是lombok中的功能,根据你定义的字段自动注入setter和getter等方法
4. 编写操作mongo的接口
public interface DataRepository extends MongoRepository<DataMongoObject, String> {
/**
* 通过token进行数据查询,非GridFS
*
* @param token
* @return
*/
DataMongoObject findByToken(String token);
/**
* 通过sourceName进行查询
*
* @param sourceName
* @param pageable
* @return
*/
Page<DataMongoObject> findBySourceName(String sourceName, Pageable pageable);
@Override
@Query(value = "{'updateTime':{'$gte':'1564478681215'}}")
Page<DataMongoObject> findAll(Pageable pageable);
// @Query(value = "{'requestArgs.website':?0}")
// Page<DataMongoObject> findByRequestArsWebsite(String website, Pageable pageable);
}
编写自己的mongo操作类DataRepository继承MongoRepository
根据自己的需要些一些CRUD
@Query注解中时mongo的查询条件,
上面的意思是查询在1564478681215这个时间之后的数据
5. 编写你的实现类去写具体的CRUD逻辑,以及一些判断条件
如果你只是想使用mongoRepository已经定义好的操作方法,
这个步骤也可以省去,直接看第6步
@Slf4j
@Service
public class GridFsMongoService {
@Autowired
private DataRepository dataRepository;
public void findAll(int pageNum,int pageSize) {
Page<DataMongoObject> all1 = dataRepository.findAll(new PageRequest(--pageNum, pageSize));
}
}
@Service注解表明这是一个bean,功能是上面第4步mongo操作接口的实现类
6. 编写controller,对数据进行访问
@Slf4j
@RestController
@RequestMapping("/api/mongo")
public class ParsedDataController {
@Autowired
private DataRepository dataRepository;
/**
* page从零开始的,这里做了处理,从1开始
*
* @param pageNum
* @param pageSize
* @return
*/
@GetMapping("/data/all")
public String findAll(Integer pageNum, Integer pageSize) {
ResultInfo resultInfo = new ResultInfo();
try {
if (StringUtil.isEmpty(pageNum) || pageNum < 1 || pageNum >= Consts.MAX_SIZE) {
pageNum = Consts.DEFAULT_PAGE_NUM;
} if (StringUtil.isEmpty(pageSize) || pageSize < 1 || pageSize >= Consts.MAX_SIZE) {
pageSize = Consts.DEFAULT_PAGE_SIZE;
} Page<DataMongoObject> all = dataRepository.findAll(new PageRequest(--pageNum, pageSize));
resultInfo.setSuccess(true);
resultInfo.setDetail(all);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return resultInfo.toString();
}
}
关注公众号秦川以北
后续更多精彩实用内容分享!
springboot集成mongo的更多相关文章
- SpringBoot集成Shiro并用MongoDB做Session存储
之前项目鉴权一直使用的Shiro,那是在Spring MVC里面使用的比较多,而且都是用XML来配置,用Shiro来做权限控制相对比较简单而且成熟,而且我一直都把Shiro的session放在mong ...
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- SpringBoot集成security
本文就SpringBoot集成Security的使用步骤做出解释说明.
- springboot集成Actuator
Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...
- SpringBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- springboot集成mybatis(二)
上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...
- springboot集成mybatis(一)
MyBatis简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyB ...
- springboot集成redis(mybatis、分布式session)
安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...
- SpringBoot集成jsp
一.springBoot集成jsp: 1.修改pom文件 <!--集成jsp所需jar包--> <!--jsp页面使用jstl标签--> <dependency> ...
随机推荐
- TallestCow
简单解说 建立差分数组. 以最高的牛为高度基点,假设牛A和牛B能相互看见,就把牛A和牛B中间的牛高度都-1 最后对每头牛直接计算输出即可. 需要注意的是他给出的关系中:两头牛的顺序可能是颠倒的,而且关 ...
- BZOJ1294 洛谷P2566 状态压缩DP 围豆豆
传送门 题目描述 是不是平时在手机里玩吃豆豆游戏玩腻了呢?最近MOKIA手机上推出了一种新的围豆豆游戏,大家一起来试一试吧游戏的规则非常简单,在一个N×M的矩阵方格内分布着D颗豆子,每颗豆有不同的分值 ...
- Python——assert、isinstance的用法
1.assert 函数说明: assert语句是一种插入调试断点到程序的一种便捷的方式. 使用范例 assert 3 == 3 assert 1 == True assert (4 == 4) pri ...
- UiAutomator源码学习(2)-- UiAutomationBridge
从上一章对UiDevice的学习,可以看出几乎所有的操作都离不开 UiAutomationBridge.重新看一下UIDevice的构造方法: private UiDevice(Instrumenta ...
- java 面向对象(三十一):异常(四) 自定义异常类
如何自定义一个异常类?/* * 如何自定义异常类? * 1. 继承于现的异常结构:RuntimeException .Exception * 2. 提供全局常量:serialVersionUID * ...
- vue 集成html5 plus
首先要安装一个包 vue-html5plus npm i vue-html5plus -S 然后配置这个文件 在main.js添加一串代码 var onPlusReady = function (ca ...
- Navicat连接数据库报错2059 - authentication plugin...错误解决方法
今天使用Navicat 连接MySQL数据库出现错误:2059 - authentication plugin 'caching_sha2_password'. 出现这个错误的原因是因为MySQL8. ...
- Spring Boot中Tomcat是怎么启动的
Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持.我们可以通过配置来指定我们需要的容器. 本文以我们平时最常使用的容器Tomcat为列来介绍以 ...
- 《串并行数据结构与算法(SML语言)实验》题解
注意:本题解仅供参考学习,请勿直接抄袭代码,否则造成的后果和笔者无关. 第一题: 题意: 对n个数升序排序. 题解: 快排,不解释. 代码(省略了输入输出函数,下同): val n = getInt ...
- bzoj1640[Usaco2007 Nov]Best Cow Line 队列变换*&&bzoj1692[Usaco2007 Dec]队列变换*
bzoj1640[Usaco2007 Nov]Best Cow Line 队列变换 bzoj1692[Usaco2007 Dec]队列变换 题意: 有一个奶牛队列.每次可以在原来队列的首端或是尾端牵出 ...