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> ...
随机推荐
- ExecutorsService 中的 submit和 execute的区别
闲来无事,写点代码练练手.于是就看了下ExecutorService常用的提交任务的方法: <T> Future<T> submit(Callable<T> tas ...
- HBase写入异常RejectedExecutionException
HBase在大数据量并发写入时,写一段时间后HBase监控界面出现告警,写入程序日志里频繁出现异常java.util.concurrent.RejectedExecutionException: 从异 ...
- 51nod1524 最大子段和V2
题干 N个整数组成的序列a[1],a[2],a[3],-,a[n],你可以对数组中的一对元素进行交换,并且交换后求a[1]至a[n]的最大子段和,所能得到的结果是所有交换中最大的.当所给的整数均为负数 ...
- USACO07NOV Cow Relays G 题解
题目 For their physical fitness program, \(N (2 ≤ N ≤ 1,000,000)\) cows have decided to run a relay ra ...
- Windows系统appium移动端自动化真机环境搭建
appium-windows-android环境搭建完成以后,就可以进行真机模式下的appium环境搭建啦!! 准备:把要测试的app下载至本机(小波的是把apk放在桌面上,例如:C:\Users\w ...
- Linux多任务编程之四:exit()函数及其基础实验(转)
来源:CSDN 作者:王文松 转自Linux公社 exit()和_exit()函数 函数说明 创建进程使用fork()函数,执行进程使用exec函数族,终止进程则使用exit()和_exit() ...
- SQLAlchemy(四):SQLAlchemy查询高级
目录 SQLAlchemy04 /SQLAlchemy查询高级 1.排序 2.limit.offset和切片操作 3.懒加载 4.group_by 5.having 6.join 7.subquery ...
- Linux03 /shell命令
Linux03 /shell命令 目录 Linux03 /shell命令 1. xshell快捷键 2. 修改linux的命令提示符,通过变量PS1控制 3. yum安装/卸载 4. cat命令 5. ...
- 问题:win10缺少一个或多个网络协议
国庆回家,家里电脑连不上网了,诊断给出的结果是“缺少一个或多个网络协议” 网上这类问题提问的不少,回答的方法也是各种各样,一个一个试下来,发现这个方法是可行的. 1.打开设置--网络和Internet ...
- Spirngboot-自定义Starter
一.Spring Boot Starter简介 Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件 ...