springboot整合mongodb,insert()和save()两种插入方法有什么不同?

我们都知道springboot整合mongodb,insert()和save()都是插入文档方法,但是他们有什么不同呢?下面我们来细说一下

相同点

他们都有把数据插入文档的能力。

	/**
     * insert方法插入
     */
    @Test
    void insert(){
        mongoTemplate.insert(new User(1,"CoderGAP",18));
    }

    /**
     * save方法插入
     */
    @Test
    void save(){
        mongoTemplate.save(new User(2,"CoderGAP",18));
    }
不同点

1.insert支持集合插入,能传入集合参数,save只能一条一条的传入。
在这里插入图片描述
在这里插入图片描述

2.插入id相同的数据,insert方法会报错,而save方法不会。save方法本质上是如果没有id相同的数据就直接插入,如果有id相同的数据则是先删除后插入。

如果插入id相同的数据,insert会报以下错误
Caused by: com.mongodb.MongoWriteException

总结

1.save()方法只能一条一条的插入,效率比较慢。而insert()方法能传入集合插入,效率比较高。
2.save()方法如果有id相同的数据,先删除再插入,不会报错,可以理解为更新数据。insert()如果有id相同的数据则会报MongoWriteException错误。具体使用根据业务的场景。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中同时整合MongoDB和MyBatis也是可行的。你可以按照以下步骤进行操作: 1. 首先,确保你的项目中包含了MongoDB和MyBatis的依赖。在pom.xml文件中添加以下依赖: ```xml <!-- MongoDB依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <!-- MyBatis依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> ``` 2. 在Spring Boot的配置文件(application.properties或application.yml)中,配置MongoDB和MyBatis的连接信息。例如: ```yaml # MongoDB配置 spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mydatabase # MyBatis配置 mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.domain ``` 3. 创建实体类来映射MongoDB中的文档,并通过注解将其与MyBatis的mapper文件进行映射。例如: ```java import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "users") public class User { @Id private String id; private String name; private int age; // 省略getter和setter方法 } ``` 4. 创建一个MyBatis的mapper接口和对应的mapper XML文件,用于定义数据操作的SQL语句。例如: ```java public interface UserMapper { User getUserById(String id); void insertUser(User user); void updateUser(User user); void deleteUser(String id); } ``` ```xml <!-- userMapper.xml --> <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" resultType="com.example.domain.User"> SELECT * FROM users WHERE id = #{id} </select> <insert id="insertUser" parameterType="com.example.domain.User"> INSERT INTO users(id, name, age) VALUES(#{id}, #{name}, #{age}) </insert> <update id="updateUser" parameterType="com.example.domain.User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUser" parameterType="String"> DELETE FROM users WHERE id = #{id} </delete> </mapper> ``` 5. 创建一个数据访问层接口,并使用`@Mapper`注解标识为MyBatis的mapper接口。例如: ```java import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserRepository extends UserMapper { // 可以在这个接口中定义自定义的查询方法 } ``` 6. 最后,在业务逻辑层或控制器中使用`UserRepository`来进行数据操作。例如: ```java import org.springframework.beans.factory.annotation.Autowired;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值