Springboot最简单的整合使用Mongodb案例
创建一个springboot项目
然后pom.xml文件:(从pom文件里面可以看出,就一个包导入就可以了。)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jc</groupId>
<artifactId>mongodemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mongodemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--mongodb的包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后,yml文件:
spring:
data:
mongodb:
uri: mongodb://IP地址:端口(27017或者你设置的)/(数据库的名称)
到此,配置的条条框框(虽然没啥)已经搞完,那么我们开始进入使用环节。
第一步是干嘛呢?
先看下,mongodb里面数据的格式:
从上边截图可以看到,这里面的Collections(大集合),其实就是类似mysql里面的表的那种东西。然后右边的框,可以看到有个Key的概念,其实就是指这个Collections(大集合)里面,你需要获取的小集合信息,在这个小集合里面,实际上是对应一个实体类的,取值的时候就get方法就可以。
上面是简单的介绍一下,其实我们还是看代码吧:
那么,我们先来建一个实体类吧,
UserEntity:
package com.jc.mongodemo.pojo;
import java.io.Serializable;
/**
* @Author: JCccc
* @CreateTime: 2018-09-28
* @Description:
*/
public class UserEntity implements Serializable {
private static final long serialVersionUID = -3258839839160856613L;
private Long id;
private String userName;
private String passWord;
private String type;
@Override
public String toString() {
return "UserEntity{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
", type='" + type + '\'' +
'}';
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
好了,这里需要注意的是,上面实体类的字段,是必须一 一 对 应 mongodb里面某个小集合的 字段的!!!!!否则 ,不能成功取数据!(当然我们这教程是从0开始, 所以我们规定好,插入就行了。 后面取当然也就一一对应了。 但是如果你是直接上来就取数据,那么你就得注意对应了!)
然后写个方法类吧,我这里没严格解耦,
UserDaoImpl:
package com.jc.mongodemo.dao;
import com.jc.mongodemo.pojo.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: JCccc
* @CreateTime: 2018-09-28
* @Description:
*/
@Component
public class UserDaoImpl {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 创建对象
* @param user
*/
public void saveUser(UserEntity user) {
mongoTemplate.save(user);
}
public List<UserEntity> findUserByType(String type) {
Query query=new Query(Criteria.where("type").is(type));
List<UserEntity> userlist = mongoTemplate.findAllAndRemove(query , UserEntity.class);
return userlist;
}
public List<UserEntity> findUserByCollection(String CollectionName,String type) {
Query query=new Query(Criteria.where("type").is(type));
List<UserEntity> userlist = mongoTemplate.findAllAndRemove(query , UserEntity.class,CollectionName);
return userlist;
}
/**
* 根据用户名查询对象
* @param userName
* @return
*/
public UserEntity findUserByUserName(String userName) {
Query query=new Query(Criteria.where("userName").is(userName));
UserEntity user = mongoTemplate.findOne(query , UserEntity.class);
return user;
}
/**
* 更新对象
* @param user
*/
public void updateUser(UserEntity user) {
Query query=new Query(Criteria.where("id").is(user.getId()));
Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
//更新查询返回结果集的第一条
mongoTemplate.updateFirst(query,update,UserEntity.class);
//更新查询返回结果集的所有
// mongoTemplate.updateMulti(query,update,UserEntity.class);
}
/**
* 删除对象
* @param id
*/
public void deleteUserById(Long id) {
Query query=new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query,UserEntity.class);
}
}
从上边可以看到,已经开始使用mongodb了!!!! 都开始往里面CRUD了! 关键点在于啥???
关键点:
@Autowired private MongoTemplate mongoTemplate;
这就是告诉项目,我这里要注入mongodb的使用!
好了,然后我们去test里面去调用一下方法结束我们这个简单到极致的教程吧:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MongodemoApplicationTests {
@Test
public void contextLoads() {
}
@Autowired
private UserDaoImpl userDao;
//...............空着先
}
然后开始尝试调用方法:
这是增加一个用户信息。
public void testSaveUser() throws Exception {
UserEntity user=new UserEntity();
user.setId(106l);
user.setUserName("小凯");
user.setPassWord("fffooo123");
user.setType("A");
userDao.saveUser(user);
}
这是查询一个用户信息。
public void findUserByUserName(){
UserEntity user= userDao.findUserByUserName("小凯");
System.out.println("user is "+user);
}
这是更新一个用户信息。
public void updateUser(){
UserEntity user=new UserEntity();
user.setId(106l);
user.setUserName("大凯");
user.setPassWord("11223344");
userDao.updateUser(user);
}
这是删除一个用户信息。
public void deleteUserById(){
userDao.deleteUserById(106l);
}
好了,到此结束吧。
ps: 我这个例子,用户id我用的long类型哈,所以每个数字后面的l是让数字变成Long类型的意思。