新建一个基本的 Spring-boot 项目
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置数据源
在 Resource 文件中的 application.properties 添加数据源信息(ip:端口号/数据库名称)
spring.data.mongodb.uri=mongodb://localhost:27017/test
如果数据库有密码
spring.data.mongodb.uri=mongodb://user:password@localhost:27017/test
新建 MongoDB 实体类(与数据库信息相对应)
package com.yufh.springbootmongodb.entity;
import lombok.Data;
import org.springframework.data.annotation.Id;
/**
* @author yufh
* @describe 数据库实体类
* @date 2019/8/12
*/
@Data //注解提供get/set方法
public class User {
@Id //主键字段
private String id;
private String name;
private String age;
}
package com.yufh.springbootmongodb.service;
import com.yufh.springbootmongodb.entity.User;
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.stereotype.Service;
/**
* @author yufh
* @describe MongoTemplate操作数据库
* @date 2019/8/12
*/
@Service
public class mongoTemplateDemo {
@Autowired
MongoTemplate mongotemplate;
public String insert() {
//自己定义数据信息
User user = new User();
user.setId("4");
user.setName("sss");
user.setAge("1211");
mongotemplate.save(user);
return "保存数据";
}
public String query() {
Query query = new Query();
query.addCriteria(Criteria.where("id").is("2"));
String name = mongotemplate.findOne(query, User.class).getName();
return name;
}
}
新建定义 repository 接口继承 mongoRepository 接口
package com.yufh.springbootmongodb.service;
import com.yufh.springbootmongodb.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Service;
public interface UserRepository extends MongoRepository<User, String> {
User findByName(String name);
void deleteById(String id);
}
使用新建接口
package com.yufh.springbootmongodb.service;
import com.yufh.springbootmongodb.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author yufh
* @describe
* @date 2019/8/12
*/
@Service
public class mongoRepositoryDemo {
@Autowired
UserRepository userRepository;
public User queryUserByname() {
return userRepository.findByName("yyy");
}
public User insertUser(){
User user = new User();
user.setId("3");
user.setName("qqq");
user.setAge("2322");
userRepository.save(user);
return user;
}
}
package com.yufh.springbootmongodb;
import com.yufh.springbootmongodb.service.mongoRepositoryDemo;
import com.yufh.springbootmongodb.service.mongoTemplateDemo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMongodbApplicationTests {
@Resource
mongoTemplateDemo mongoTemplateDemo;
@Resource
mongoRepositoryDemo mongoRepository;
@Test
public void insertTest1() {
mongoTemplateDemo.insert();
}
@Test
public void queryTest1(){
System.out.println(mongoTemplateDemo.query());
}
@Test
public void queryTest2() {
System.out.println(mongoRepository.queryUserByname());
}
@Test
public void insertTest2() {
System.out.println(mongoRepository.insertUser());
}
}
注意:
SpringBoot 项目的 Bean 装配默认规则是根据 Application 类所在的包位置从上往下扫描! “Application 类”是指 SpringBoot 项目入口类。这个类的位置很关键:
将接口与对应的实现类放在与 application 启动类的同一个目录或者他的子目录下,这样注解可以被扫描到。
也可以指定扫描包的路径