SpringBoot 整合 MongoDB实战

SpringBoot 整合 MongoDB 实战开发

一、介绍
在前面的文章中,我们详细的介绍了 MongoDB 的配置和使用,如果你对 MongoDB 还不是很了解,也没关系,在 MongoDB 中有三个比较重要的名词:数据库、集合、文档!

数据库(Database):和关系型数据库一样,每个数据库中有自己的用户权限,不同的项目组可以使用不同的数据库
集合(Collection): 集合指的是文档组(类似于 Mysql 中的表的概念),里面可以存储许多文档
文档(Document): 文档是 MongoDB 中最基本的数据单元,由键值对组成,类似于 JSON 格式,可以存储不同字段,字段的值可以包括其他文档、数组和文档数组
二、常用註解
2.1 Collection
@Id
@Document
@Field
@Transient
釋義:
@Id
主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束。如果自己不设置@Id主键,mongo会自动生成一个唯一主键,并且插入时效率远高于自己设置主键。原因可参考上一篇mongo和mysql的性能对比。
在实际业务中不建议自己设置主键,应交给mongo自己生成,自己可以设置一个业务id,如int型字段,用自己设置的业务id来维护相关联的表
@Document
标注在实体类上,类似于hibernate的entity注解,标明由mongo来维护该表。
org.springframework.data.mongodb.core.mapping.Document.class
把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。
@Document(collection=“mongodb 对应 collection 名”)
// 若未加 @Document ,该 bean save 到 mongo 的 user collection
// 若添加 @Document ,则 save 到 thisUser collection

org.springframework.data.mongodb.core.mapping.Document.class
把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。
@Document(collection="mongodb 对应 collection 名")      
 
// 若未加 @Document ,该 bean save 到 mongo 的 user collection
// 若添加 @Document ,则 save 到 thUser collection
@Document(collection="thUser ") 
public class User{
}

@Field

代表一个字段,可以不加,不加的话默认以参数名为列名。

给映射存储到 mongodb 的字段取别名
在 java bean 中字段名为 firstName,存储到 mongo 中 key 为 fName

给映射存储到 mongodb 的字段取别名
在 java bean 中字段名为userName,存储到 mongo 中 key 为 uName
    @Field("uName")
private String userName;

@Transient
被该注解标注的,将不会被录入到数据库中。只作为普通的javaBean属性

三 、SpringBoot 整合 MongoDB
3.1、创建 SpringBoot 工程,添加 MongoDB 依赖包

org.springframework.boot spring-boot-starter-parent 2.1.0.RELEASE org.springframework.boot spring-boot-starter-data-mongodb 3.2、添加配置文件 在application.properties文件中添加mongodb配置

#配置数据库连接地址
spring.data.mongodb.uri=mongodb://test123:test123@127.0.0.1:27017/test_db
3.3、创建实体类
创建用于示例中测试的实体类Person。

其中注解@Document(collection=“persons”)用于指定当前文档属于集合persons。

注解@Id表示当前id字段属于主键类型。

/**

  • 使用@Document注解指定集合名称
    */
    @Document(collection=“persons”)
    public class Person implements Serializable {
    private static final long serialVersionUID = -3258839839160856613L;

    /**

    • 使用@Id注解指定MongoDB中的 _id 主键
      */
      @Id
      private Long id;

    private String userName;

    private String passWord;

    private Integer age;

    private Date createTime;

    //…get/set

    @Override
    public String toString() {
    return “Person{” +
    “id=” + id +
    “, userName='” + userName + ‘’’ +
    “, passWord='” + passWord + ‘’’ +
    “, age=” + age +
    “, createTime=” + createTime +
    ‘}’;
    }
    }
    3.4、操作 MongoDB
    Springboot 操作 MongoDB 有两种方式。

第一种方式是采用 Springboot 官方推荐的 JPA 方式,这种操作方式,使用简单但是灵活性比较差。
第二种方式是采用 Spring Data MongoDB 封装的 MongoDB 官方 Java 驱动 MongoTemplate 对 MongoDB 进行操作,这种方式非常灵活,能满足绝大部分需求。
本文将采用第二种方式进行介绍!

3.5、插入文档
MongoTemplate提供了insert()方法,用于插入文档,示例代码如下:

用于插入文档
没指定集合名称时,会取@Document注解中的集合名称
@RunWith(SpringRunner.class)
@SpringBootTest
public class PersonServiceTest {

@Autowired
private MongoTemplate mongoTemplate;

/**
 * 插入文档
 * @throws Exception
 */
@Test
public void insert() throws Exception {
    Person person =new Person();
    person.setId(1l);
    person.setUserName("张三");
    person.setPassWord("123456");
    person.setCreateTime(new Date());
    mongoTemplate.insert(person);
}

}
自定义集合名称,插入文档
@RunWith(SpringRunner.class)
@SpringBootTest
public class PersonServiceTest {

@Autowired
private MongoTemplate mongoTemplate;

/**
 * 自定义集合,插入文档
 * @throws Exception
 */
@Test
public void insertCustomCollection() throws Exception {
    Person person =new Person();
    person.setId(1l);
    person.setUserName("张三");
    person.setPassWord("123456");
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值