本文将从工程的建立到mongo的使用进行讲解。
一、创建工程
仅选择Spring Web、Spring Data MongoDB即可
到此工程建立完毕,就会建立一个mongo基础的java工程了。
二、环境依赖
<dependencies>
<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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
三、mongo库配置和文件配置
如果是第一次使用mongo,需要创建用户
> use mydb
switched to db mydb
> db.createUser({user:"user", pwd:"123456", roles:[{role:"readWriteAnyDatabase", db:"mydb"}]});
Successfully added user: {
"user" : "user",
"roles" : [
{
"role" : "readWriteAnyDatabase",
"db" : "mydb"
}
]
}
momgo权限
配置文件。根据自己的实际库名称将properties配置完整。
spring.data.mongodb.authentication-database=mydb
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.username=user
spring.data.mongodb.password=password
# 指定使用的数据库
# 不必预先创建,不存在该数据库会自动创建
spring.data.mongodb.database=db_user
四、创建实体类
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Data
public class User {
@Id
private String id;
public String name;
private String age;
}
五、创建dao层和实现类
在dao层里面创建自己需要的方法。本次将增删改查方法列出来
public interface UserDao {
//增加
void saveStu(User user);
//删除
void deleteUser(String id);
//修改
void updateUser(User user);
//根据id获取user
User getUserById(String id);
//获取全部user
List<User>getAllUser();
}
@Repository
public class UserService implements UserDao {
@Resource
private MongoTemplate mongoTemplate;
@Override
public void saveStu(User user) {
mongoTemplate.save(user);
}
@Override
public void deleteUser(String id) {
User user = mongoTemplate.findById(id,User.class);
mongoTemplate.remove(user);
}
@Override
public void updateUser(User user) {
mongoTemplate.save(user);
}
@Override
public User getUserById(String id) {
return mongoTemplate.findById(id,User.class);
}
@Override
public List<User> getAllUser() {
return mongoTemplate.findAll(User.class);
}
}
六、测试
@SpringBootTest
@Slf4j
class MongoTestApplicationTests {
@Resource
private UserDao userDao;
//插入十个user实例
@Test
void contextLoads() {
for (int i = 0; i<10;i++ ){
User user = new User()
.setId(String.valueOf(i+1))
.setName("小明")
.setAge("10");
log.info("名字============{}", user);
userDao.saveStu(user);
}
}
//删除id为2的user
@Test
void deleteUser(){
userDao.deleteUser("2");
}
//修改
@Test
void updateUser(){
User user = userDao.getUserById("3");
//将id为3的user的age修改为20
user.setAge("20");
userDao.updateUser(user);
}
//根据id获取user
@Test
void getUserById(){
User user = userDao.getUserById("5");
log.info("id=5的用户为=================:{}",user);
}
void getAllUser(){
List<User>list = userDao.getAllUser();
list.forEach(System.out::println);
}
}
七、测试结果
1、db_user库开始的时候并没有。随着我们对db_user做操作,这个库相应生成
第一部分是之前的库名,下面部分是执行save操作后生成的库。
2、save操作生成的user。是根据代码生成的十个user实例
3、删除id为2的user,图中可以看出已经删除
4、修改id为3的user的age为20,图中可以看到已经修改
5、根据id获取id=5的user,图中可以看到已经获取到
6、获取所有user,图中可以看到都已获取到
以上就是springboot整合mongodb的完整使用。按照这个流程来一遍吧!