SpringBoot2.x 整合MongoDB——MongoTemplate

MongoDB

按照惯例,肯定是要介绍一番的,不想看的朋友可以直接跳到下面的MongoTemplate使用。

MongoDB是一个文档数据库,是一个非关系型数据库(NoSql)。处理速度超级快,同样的数据库还有Redis,被称为性能利器的Redis同样是非关系数据库,但是redis不能运算,尽管有脚本可以辅助,但是终究在某些方面是不如MongoDB的。可以说MongoDB是一个最接近关系型数据库的NoSQL。

为啥这么说呢?

在这里插入代码片

因为MongoDB将数据存储为一个文档,数据结构由键值对组成。这里的MongoDB文档类似于JSON数据集,所以很容易转化成java对象。好了废话不多说了,看看SpringBoot是如何整合的吧。


配置MongoDB

一旦引入了关于starter的依赖,就说明SpringBoot 已经提供了关于它的默认配置。
MongoDB同样是这样的。
看看MongoDB的配置吧

spring:
  data:
    mongodb:
      #数据库名
      database: syrain
      #地址
      host: 127.0.0.1
      #端口号
      port: 27017
      username:   #没有可以不写
      password:   #没有可以不写

只要把上面的配置了就可以连接MongoDB数据库


怎么建表呢?

其实很简单,不用操作你的数据库,直接建java实体类就可以

//MongoDB文档标示,告诉spring这就是MongoDB实体类
@Document(value=“可加可不加,类似于name”) 
@Data //lombok插件(有了它不用写getset、tostring了)
public class User  implements Serializable {

    @Id // 自动生成一个objectId,是MongoDB的唯一标示
    private String id;

    @Field("user_name") //数据库里该属性叫 user_name
    private String userName;

    private String note;

    private List<Role> roles;
    
}
这样写完了pojo类就可以用啦。在项目启动后保存会自动根据class分类

在这里插入图片描述


MongoTemplate使用

查询:直接@Autowired将MongoTemplate注入到需要的地方,然后调用下面方法

方法返回值
findById( id, User.class)User (根据id查某一条数据)
findById( id, User.class,“集合名”)User (根据id查某一条数据,根据集合名)
findOne( query , User.class)User (根据查询条件,获取第一个数据)
findOne( query , User.class,“集合名”)User (根据查询条件和集合名,获取第一个数据)
find( query, User.class)List<> (根据条件查询,获取符合条件的集合)
find( query, User.class, “集合名” )List<> (根据条件查询和集合名,获取符合条件的集合
findAll( User.class )根据类型查询所有
findAll( User.class ,“集合名”)根据类型和集合名查询所有

其中集合名,就是当类型相同的时候,我们需要给这个集合起个名字存在MongoDB数据库中,要不然两个一样的怎么分辨呢?作为查询的一个参数,String类型的。这个类型在上面提到过的@Document(value=“”)
如果没有填写该value属性,那么就使用默认类名为数据库集合名

新增:分为save和insert; save表示:如果存在相同id,那么就更新属性,如果没有,则新增

方法返回值
insert(实体对象, “集合名(可省略)” )void
save (实体对象, “集合名(可省略)” )void
以下都是批量新增
insert (集合 <> ,User.class,“集合名(可省略)” )void
insertAll ( 集合 <> )void

更新:分为upsert、updateMulti ;
upsert 更新符合条件的第一条、updateMulti 更新符合条件多个

方法指南
upsert (query,update, User.class)更新指定类型的第一条
upsert (query,update, “集合名” )更新指定集合名的的第一条
upsert (query,update, User.class,“集合名”)更新指定类型指定集合名的第一条
updateMulti (query,update, User.class)更新指定类型的多条数据
updateMulti (query,update, “集合名” )更新指定集合名的多条数据
updateMulti (query,update, User.class,“集合名”)更新指定类型指定集合名的多条数据
	Query query =new Query(Criteria.where("id").is(id));
        Update update =new Update();
        update.set("userName","王二丫");
        mongoTemplate.upsert(query,update,User.class);

删除:

方法返回值
remove (query,User.class)根据查询条件指定删除
remove (query,User.class ,“集合名”)根据集合名和查询条件删除
remove(query ,“集合名”)根据集合名指定删除
remove(“集合名”)直接删除该集合

其他的一些操作:

方法返回值
findAndModify查找并修改
exists查看是否存在

其中的query是我们需要构建的查询条件。User.class就是我们进行操作的类型

如何重构(Query详解):
https://blog.csdn.net/weixin_42040802/article/details/87696137

	Query query =new Query(Criteria.where("id").is(id));
	User bbb = mongoTemplate.findOne(query, User.class, "bbb");

JPA方式操作MongoDB

众所周知JPA方式操作数据库提供的接口是JpaRepository,而MongoDB作为最接近关系型数据库的的NoSQL,SpringBoot同时为我们提供了MongoRepository接口。
步骤:
①自己的类继承MongoRepository接口。
②在启动类上加入注解**@EnableMongoRepositories(scanPackages=""),**通过该注解扫描我们自己继承MongoRepository接口的类。
③MongoRepository 所定义的方法,

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值