POM依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
application资源配置
spring.data.mongodb.uri=mongodb://localhost:27017/test
创建Bean对象与数据库关联
@Data
// 对应数据库集合名(表名)
@Document("User")
public class User {
@Id
private String id;
private String name;
private Integer age;
private String email;
private String createDate;
}
方式1【MongoTemplate】
创建测试类进行CRUD测试
@SpringBootTest
class DemomogoApplicationTests {
@Autowired
private MongoTemplate mongoTemplate;
// 添加
@Test
public void create() {
User user = new User();
user.setName("张三");
user.setAge(22);
user.setEmail("123@qq.com");
User userResult = mongoTemplate.insert(user);
System.out.println(userResult);
}
// 查询所有
@Test
public void findAll() {
List<User> userList = mongoTemplate.findAll(User.class);
System.out.println(userList);
}
// 通过id查询
@Test
public void findById() {
User user = mongoTemplate.findById("62b3db700adda6714fe5b719", User.class);
System.out.println(user);
}
// 条件查询
@Test
public void findByNameAndAge() {
Query query = new Query(Criteria.where("name").is("张三").and("age").is(20));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
// 模糊查询***
@Test
public void findLikeName() {
String name = "张";
String regex = String.format("%s%s%s","^.*",name,".*$");
// ^.*张.*$
Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
// 分页查询+模糊查询
@Test
public void findPageLikeName() {
Integer pageNum = 1;
Integer pageSize = 5;
String name = "张";
// 模糊查询
String regex = String.format("%s%s%s","^.*",name,".*$");
Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
// 统计
long count = mongoTemplate.count(query, User.class);
List<User> userList = mongoTemplate.find(
query.skip((pageNum - 1) * pageSize).limit(pageSize), User.class
);
System.out.println(count);
System.out.println(userList);
}
// 通过id修改
@Test
public void updateUser() {
// 通过id查询
User user = mongoTemplate.findById("62b3db700adda6714fe5b719", User.class);
// 设置修改值
user.setName("张三_2");
user.setAge(22);
// 调用方法实现修改
Query query = new Query(Criteria.where("_id").is(user.getId()));
Update update = new Update();
update.set("name",user.getName());
update.set("age",user.getAge());
update.set("email",user.getEmail());
UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);
// 获取影响行数
System.out.println(upsert.getModifiedCount());
}
// 通过id删除
@Test
public void delUser() {
Query query = new Query(Criteria.where("_id").is("62b3db700adda6714fe5b719"));
DeleteResult remove = mongoTemplate.remove(query, User.class);
// 获取影响行数
System.out.println(remove.getDeletedCount());
}
}
方式2【MongoRepository】
创建UserRepository接口继承MongoRepository
public interface UserRepository extends MongoRepository<User,String> {
}
创建测试类进行CRUD测试