SpringBoot | 第三十一章:MongoDB的集成和使用 (3)

0.创建资源类

/** * MongoRepository 示例 * @author oKong * */ public interface NotifyMsgDao extends MongoRepository<NotifyMsg, String>{ /* * 根据消息号进行查询 */ NotifyMsg findByNotifyNo(String notifyNo); /** * 根据日期查询 自定义查询 * @author 作者:oKong */ //需要注意 查询的语法结构 ,同时这里和`jpa`不一样的地方是,第一个索引值从0 开始。。 @Query("{'notifyDate':?0}") Page<NotifyMsg> queryBySql(String notifyDate,Pageable pageable); }

这里需要注意一个地方:和上一章节的自定义sql不同之处是,参数索引值从0开始。

query注意点

同时,要注意查询的语法。具体用法,可查看:https://docs.spring.io/spring-data/mongodb/docs/1.10.14.RELEASE/reference/html/#mongodb.repositories.queries 这里简单截图下:

SpringBoot | 第三十一章:MongoDB的集成和使用

SpringBoot | 第三十一章:MongoDB的集成和使用

1.编写示例控制层。

/** * MongoRepository 示例 * @author oKong * */ @RestController @RequestMapping("/repository") @Slf4j public class MongoRepositoryController { @Autowired NotifyMsgDao notifyMsgDao; @PostMapping("/add") public NotifyMsg add(NotifyMsg msg) { log.info("repository方式新增:{}", msg); return notifyMsgDao.save(msg); } @GetMapping("/find/sql/{date}") public Page<NotifyMsg> queryBySql(@PathVariable String date){ Pageable pageable = new PageRequest(0, 10); log.info("repository方式分页sql查找日期:{}", date); return notifyMsgDao.queryBySql(date, pageable); } @GetMapping("/find/{no}") public NotifyMsg findByNotifyNo(@PathVariable String no) { log.info("repository方式查找单号:{}", no); return notifyMsgDao.findByNotifyNo(no); } }

2.启动应用,使用Postman,访问具体的方法,就可以看见相关结果了。

新增::8080/repository/add

SpringBoot | 第三十一章:MongoDB的集成和使用

根据消息日期查询::8080/repository/find/sql/具体日期

SpringBoot | 第三十一章:MongoDB的集成和使用

根据消息号查询::8080//template/find/具体消息号

SpringBoot | 第三十一章:MongoDB的集成和使用

也可直接利用可视化工具,直接查看数据信息

工具查看

参考资料

https://docs.spring.io/spring-data/mongodb/docs/1.10.14.RELEASE/reference/html

https://www.mongodb.com/cn

总结

本章节主要介绍了Mongodb的集成和简单的使用。相关更加详细的用法,可取官网查阅下,若使用MongoRepository模式,基本和上章节讲的Spring-data-jpa用法差不多,有些细微差别,就是自定义查询sql上了,毕竟一个是关系型数据库,一个是NoSql数据库,查询的语法还有略有不同的。而使用MongoRepository还是MongoTemplate,就看个人喜好了。自从接触了jpa后,是倾向于前者的,毕竟真的比较简单呀!想多复杂用法的大家自定查阅官网信息吧。

最后

目前互联网上很多大佬都有SpringBoot系列教程,如有雷同,请多多包涵了。原创不易,码字不易,还希望大家多多支持。若文中有所错误之处,还望提出,谢谢。

老生常谈

个人QQ:499452441

微信公众号:lqdevOps

公众号

个人博客:

完整示例:https://github.com/xie19900123/spring-boot-learning/tree/master/chapter-31

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzgpf.html