1.引入依赖
<!--mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.配置文件
spring:
data:
mongodb:
database: a
host: 192.168.2.129
port: 27017
3.创建实体类
@Data
@Document("user") //指定mongodb中的集合名字
public class User {
@Id
private ObjectId id;
private String name;
private Integer age;
private String email;
private Date createDate;
}
4.1 MongoRepository
public interface UserRepository extends MongoRepository<User, ObjectId> {
}
@SpringBootTest
public class MongoRepositoryTest {
@Autowired
private UserRepository userRepository;
//添加
@Test
public void add() {
User user = new User();
user.setName("mary");
user.setAge(30);
user.setCreateDate(new Date());
userRepository.save(user);
}
//查询所有
@Test
public void findAll() {
List<User> list = userRepository.findAll();
System.out.println(list);
}
//根据id查询
@Test
public void testFindById() {
Optional<User> optional =
userRepository.findById(new ObjectId("666a9a85f5294513720647ff"));
boolean present = optional.isPresent();
if(present) {
User user = optional.get();
System.out.println(user);
}
}
//条件查询 + 排序
// age = 20
@Test
public void testFindCondition() {
//封装条件
User user = new User();
user.setAge(20);
Example<User> example = Example.of(user);
Sort sort = Sort.by(Sort.Direction.DESC, "name");
List<User> list = userRepository.findAll(example, sort);
System.out.println(list);
}
//分页查询
@Test
public void testPage() {
//第一页从0开始的
PageRequest pageable = PageRequest.of(0,2);
Page<User> page = userRepository.findAll(pageable);
List<User> list = page.getContent();
System.out.println(list);
}
//更新
@Test
public void testUpdateUser(){
//注意:先查询,再更新
Optional<User> optional = userRepository.findById(
new ObjectId("64eee9dff317c823c62b4faf")
);
if(optional.isPresent()){
User user = optional.get();
user.setAge(100);
//user中包含id,就会执行更新
userRepository.save(user);
System.out.println(user);
}
}
//删除
@Test
public void testDeleteUser(){
userRepository.deleteById(
new ObjectId("64eee9dff317c823c62b4faf")
);
}
}
4.2 MongoTemplate
@SpringBootTest
public class MongoTemplateTest {
@Autowired
private MongoTemplate mongoTemplate;
//添加
@Test
public void add() {
User user = new User();
user.setName("test");
user.setAge(20);
user.setCreateDate(new Date());
mongoTemplate.insert(user);
}
//查询所有
@Test
public void findAll() {
List<User> list = mongoTemplate.findAll(User.class);
list.forEach(user->{
System.out.println(user);
});
}
//根据id查询
@Test
public void testFindId() {
User user = mongoTemplate.findById("666a9b5e9a3653796627bb3c", User.class);
System.out.println(user);
}
//条件查询
@Test
public void testCondition() {
// where name=? and age=?
Criteria criteria =
Criteria.where("name").is("test").and("age").is(20);
Query query = new Query(criteria);
List<User> list = mongoTemplate.find(query,User.class);
System.out.println(list);
}
//分页查询
@Test
public void testPage() {
// limit 0,2
Query query = new Query();
List<User> list = mongoTemplate.find(query.skip(0).limit(2), User.class);
list.forEach(user->{
System.out.println(user);
});
}
//修改和删除
//修改
@Test
public void testUpdateUser() {
Criteria criteria = Criteria.where("_id").is("64eeeae31711344f35635788");
Query query = new Query(criteria);
Update update = new Update();
update.set("name", "zhangsan");
update.set("age", 99);
UpdateResult result = mongoTemplate.upsert(query, update, User.class);//改一条
//UpdateResult result = mongoTemplate.updateMulti(query, update, User.class);//改多条
long count = result.getModifiedCount();
System.out.println(count);
}
//删除
@Test
public void testRemove() {
Criteria criteria = Criteria.where("_id").is("64eeeae31711344f35635788");
Query query = new Query(criteria);
DeleteResult result = mongoTemplate.remove(query, User.class);
long count = result.getDeletedCount();
System.out.println(count);
}
}