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> ...
随机推荐
- PHP一维数组快速去重、去零
1.一维数组去重: /** * 一维数组去重,返回格式为索引数组 * @param array $data 待去重的数组 * @return array */ public static functi ...
- WPF中国地图
实现鼠标移动到某个地区显示Popup弹框 1,地图 <Grid Margin="0,0,0,0" Grid.Row="1"> <Path St ...
- 不会用Java Future,我怀疑你泡茶没我快, 又是超长图文!!
你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...
- Java多线程编程基础知识汇总
多线程简介 多任务 现代操作系统(Windows.Linux.MacOS)都可以执行多任务,多任务就是同时运行多个任务.例如在我们的计算机上,一般都同时跑着多个程序,例如浏览器,视频播放器,音乐播 ...
- python面试题五:Python 编程
1.B Tree和B+ Tree的区别? 1.B树中同一键值不会出现多次,并且有可能出现在叶结点,也有可能出现在非叶结点中. 而B+树的键一定会出现在叶结点中,并有可能在非叶结点中重复出现,以维持B+ ...
- python 装饰器(五):装饰器实例(二)类装饰器(类装饰器装饰函数)
回到装饰器上的概念上来,装饰器要求接受一个callable对象,并返回一个callable对象(不太严谨,详见后文). 那么用类来实现也是也可以的.我们可以让类的构造函数__init__()接受一个函 ...
- 前端04 /css样式
前端04 /css样式 目录 前端04 /css样式 昨日内容回顾 css引入 选择器 基础选择器 组合选择器 属性选择器 伪类选择器 伪元素选择器 优先级(权重) 通用选择器 css样式 1高度宽度 ...
- Python: 如何判断远程服务器上Excel文件是否被人打开
最近工作中需要去判断远程服务器上的某个Excel文件是否被打开,如果被人打开,则等待,如果没人打开使用,则去填写数据进Excel文件. 开始想的很简单,和其他语言一样,比如C#,打开文件,如果报错说明 ...
- SSRF漏洞简单分析
什么是SSRF漏洞 SSRF(服务器端请求伪造)是一种由攻击者构造请求,服务器端发起请求的安全漏洞,所以,一般情况下,SSRF攻击的目标是外网无法访问的内部系统. SSRF漏洞形成原理. SSRF的形 ...
- javascript : 找到一个树型数据的一个节点及其所有父节点
如题. (function () { let tree = { "id": 0, "label": "all", "childre ...