Spring-data对MongoDB做了支持,使用spring-data-mongodb可以简化MongoDB的操作,通过内部提供的MongoTemplate对象方便的进行数据的CRUD。
官方地址https://spring.io/projects/spring-data-mongodb
1.创建工程,导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.添加mongodb的配置信息
#配置mongo的连接地址
spring:
application:
name: springboot-05-security
data:
mongodb:
host: 192.168.90.142
port: 27017
database: admin
username: root
password: '123456'
authentication-database: admin
3.编写实体类,并通过注解配置映射
@Data
@Document("tb_person")
public class Person {
@Id
private ObjectId id;
@Field("myname")
private String name;
private int age;
private String address;
}
4.通过注入MongoTemplate进行数据操作
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MongoApplication.class)
public class MongoTest {
/**
* 1、注入MongoTemplate对象
* 2、调用对象方法完成数据的CRUD
*/
@Autowired
private MongoTemplate mongoTemplate;
//保存
@Test
public void testSave() {
Person person = new Person();
person.setName("张三");
person.setAge(18);
person.setAddress("济南高新区");
mongoTemplate.save(person);
}
/**
* 查询所有
*/
@Test
public void testFindAll() {
List<Person> list = mongoTemplate.findAll(Person.class);
for (Person person : list) {
System.out.println(person);
}
}
/**
* 条件查询
*/
@Test
public void testFind() {
//1、创建Criteria对象,并设置查询条件
Criteria criteria = Criteria.where("myname").is("张三")
.and("age").is(18)
;//is 相当于sql语句中的=
//2、根据Criteria创建Query
Query query = new Query(criteria);
//3、查询
List<Person> list = mongoTemplate.find(query, Person.class);//Query对象,实体类对象字节码
for (Person person : list) {
System.out.println(person);
}
}
/**
* 分页查询
*/
@Test
public void testPage() {
int page = 1;
int size = 2;
//1、创建Criteria对象,并设置查询条件
Criteria criteria = Criteria.where("age").lt(50);
//2、根据Criteria创建Query
Query queryLimit = new Query(criteria)
.skip((page -1) * size) //从第几条开始查询
.limit(size) //每页查询条数
.with(Sort.by(Sort.Order.desc("age")));
//3、查询
List<Person> list = mongoTemplate.find(queryLimit, Person.class);
for (Person person : list) {
System.out.println(person);
}
}
/**
* 更新
*/
@Test
public void testUpdate() {
//1、构建Query对象
//is 相当于sql语句中的=
Query query = Query.query(Criteria.where("id").is("642e98d063bd7e6e61fc8c17"));
//2、设置需要更新的数据内容
Update update = new Update();
update.set("age", 10);
update.set("myname", "lisi");
//3、调用方法
mongoTemplate.updateFirst(query, update, Person.class);
}
//删除
@Test
public void testDelete() {
//1、构建Query对象
Query query = Query.query(Criteria.where("id").is("642e98d063bd7e6e61fc8c17"));
mongoTemplate.remove(query, Person.class);
}
}