SpringBoot整合MongoDB

SpringBoot整合MongoDB


MongoDB

Mongodb是为快速开发互联网Web应用而构建的数据库系统,其数据模型和持久化策略就是为了构建高读/写吞吐量和高自动灾备伸缩性的系统。

一、Linux安装配置MongoDB

1.1、Linux各平台依赖安装

Red Hat/CentOS

sudo yum install libcurl openssl

Ubuntu 18.04 LTS (“Bionic”)/Debian 10 “Buster”

sudo apt-get install libcurl4 openssl

Ubuntu 16.04 LTS (“Xenial”)/Debian 9 “Stretch”

sudo apt-get install libcurl3 openssl

1.2、下载、配置MongoDB

MongoDB官网

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.1.tgz
tar -zxvf ******.tgz
mv mongodb-src-r5.0.1  /usr/local/mongodb #解压包拷贝到指定目录

在/etc/profile添加环境变量

export PATH=/usr/local/mongodb/bin:$PATH

创建数据库目录

默认情况下 MongoDB 启动后会初始化以下两个目录:

  • 数据存储目录:/var/lib/mongodb
  • 日志文件目录:/var/log/mongodb

在启动前可以先创建这两个目录并设置当前用户有读写权限

sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
sudo chown `whoami` /var/lib/mongo     # 设置权限
sudo chown `whoami` /var/log/mongodb   # 设置权限

创建 /usr/local/mongodb/mongodb.conf 文件

dbpath=/var/lib/mongo/
logpath=/var/log/mongodb/mongod.log
logappend = true
port = 27017
fork = true
#auth = true
bind_ip = 0.0.0.0

通过配置文件启动MongoDB

mongod --config /usr/local/mongodb/mongodb.conf

此时为无账号密码认证启动,可通过图形化管理工具远程连接,有关账号密码设置请看

图形化管理工具MongoDB Compass下载

https://www.imooc.com/article/78846

https://www.cnblogs.com/mengyu/p/9071371.html

二、Springboot整合MongoDB

Spring Data Mongodb

Spring Data Mongodb是Spring提供的一种以Spring Data风格来操作数据存储的方式,它可以避免编写大量的样板代码。

2.1、在pom.xml中添加相关依赖

<!---mongodb相关依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2.2、修改SpringBoot配置文件

修改application.yml文件,在spring:data节点下添加Mongodb相关配置。

mongodb:
  host: 
  port: 27017
  database: 
  username: 
  password: 

2.2、实体类举例

@Data
@Document
@Accessors(chain = true)
public class Msg implements Serializable {

    private static final long serialVersionUID = 2212875270718970278L;

    @Id
    private String id;

    @Indexed
    private Long memberId;

    private String memberNickname;

    private String memberIcon;

    @Indexed
    private Long productId;

    private String productName;

    private String productPic;

    private String productSubTitle;

    private String productPrice;

    private Date createTime;

    private Date updateTime;

}

2.3、自定义接口继承MongoRepository,示例

public interface MsgRepository extends MongoRepository<Msg, String> {
}

2.4、Controller、Service接口及其实现类

@Api(tags = "聊天消息", value = "MsgController")
@RestController
@RequestMapping("/msg")
public class MsgController {

    @Autowired
    private MsgService msgService;

    @PostMapping("/list")
    public ResponseMsgBody list() {
        return msgService.list();
    }

}
public interface MsgService {

    ResponseMsgBody list();
}
@Service
public class MsgServiceImpl implements MsgService {

    @Autowired
    private MsgRepository msgRepository;

    @Override
    public ResponseMsgBody list() {
        Msg msg = new Msg();
        msg.setId(null).setCreateTime(new Date());
        msgRepository.insert(msg);
        PageRequest pageRequest = PageRequest.of(0, 10);
        Page<Msg> page = msgRepository.findAll(pageRequest);
        PageInfo<Msg> pageInfo = new PageInfo<>();
        pageInfo.setRecords(page.getContent());
        pageInfo.setTotal(page.getTotalElements());
        pageInfo.setPageNum(page.getNumber());
        pageInfo.setPageSize(page.getSize());
        return ResponseMsgBody.success().add("data", pageInfo);
    }

}

2.5、接口测试

Swagger UI测试结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值