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
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
此时为无账号密码认证启动,可通过图形化管理工具远程连接,有关账号密码设置请看
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、接口测试