MongoTemplate是数据库和代码之间的接口,对数据库的操作都在它里面
1、pom.xml中添加依赖
<!-- springboot 整合 mongodb -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
2、注入MongoTemplate
@Autowired
private MongoTemplate mongoTemplate;
1、insert:
若新增数据的主键已经存在,则会抛DuplicateKeyException 异常提示主键重复,不保存当前数据。
a)单个插入:mongoTemplate.insert(obj);
//使用insert方法插入Student对象
@Override
public void test(Student student) {
mongoTemplate.insert(student);
}
b)批量插入:insert批量插入不用遍历,效率高
List<Student> stuList = new ArrayList<>();
stuList.add(new Student(1,"胡歌","男"));
stuList.add(new Student(2,"刘亦菲","女"));
stuList.add(new Student(3,"易烊千玺","男"));
stuList.add(new Student(4,"沈腾","男"));
stuList.add(new Student(5,"陈钰琪","女"));
mongoTemplate.insert(stuList, "stuList");
2、save:
若新增数据的主键已经存在,则会对当前已经存在的数据进行修改操作。
a)单个插入:mongoTemplate.save(obj);
//使用save方法插入Student对象
@Override
public void test(Student student) {
mongoTemplate.save(student);
}
1、查询全部
@Override
public List<Student> findAll() {
return mongoTemplate.findAll(Student.class);
}
2、查询一条数据
//根据name名字字段来查询
@Override
public Student find(String name) {
Query query=new Query();//创建query对象,用来添加过滤条件
//查询name为李四的文档
//这里的where,相当于MySQL中的where,用来过滤信息的
query.addCriteria(Criteria.where("name").is(name));
return mongoTemplate.findOne(query,Student.class);
}
3、多条件查询
@Override
public User login(User user) {
//根据名字和密码进行查询
Criteria criatira = new Criteria();
criatira.andOperator(Criteria.where("user_name").is(user.getUserName()),Criteria.where("password").is(user.getPassword()));
return mongoTemplate.findOne(new Query(criatira),User.class);
}
4、左右模糊查询用regex方法
//按照姓名模糊查询
@Override
public Student find(String name) {
Query query=new Query();
Pattern pattern=Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("name").regex(pattern));
return mongoTemplate.findOne(query,Student.class);
}
1、修改一个字段
//根据name名字字段来修改sex性别的值
@Override
public void updateStatu(Student student) {
Query query=new Query();
query.addCriteria(Criteria.where("name").is(student.getName()));
Update update = Update.update("sex", student.getSex());
mongoTemplate.updateMulti(query,update,Student.class);
}
2、修改多个字段
//根据DsAudit集合(表)的id字段
@Override
public void updateData(Student student) {
Query query=new Query();
//对id为3的文档进行修改
query.addCriteria(Criteria.where("_id").is(3));
Update update = new Update();//update对象是用来进行修改操作的
//修改名字Name字段的值为张三,性别为男
update.set("Name", "张三");
update.set("sex", "男");
mongoTemplate.updateFirst(query, update, Student.class);
}
1、根据字段来删除
//删除_id为3的文档
@Override
public void delete(Student student) {
Query query = new Query(Criteria.where("_id").is("3"));
mongoTemplate.remove(query, Student.class);
}
1、查询全部信息并排序:
//查询全部并根据id字段降序
@Override
public List<Student> findAll() {
Query query = new Query();
//根据id字段来排序,如果想根据多个字段进行排序,可以在str字符串数组中添加字段
String[] str= {"id"};
query.with(Sort.by(Sort.Direction.DESC,str));//DESC降序,ASC是升序
return mongoTemplate.find(query,Student.class);
}
2、根据条件查询并排序:
//根据名字字段查询并根据id字段进行降序
@Override
public List<Student> find(String name) {
Query query=new Query();
query.addCriteria(Criteria.where("name").is(name)).with(Sort.by(Sort.Order.desc("id")));
return mongoTemplate.find(query,Student.class);
}
1、Query: 定义筛选条件、排序等
2、Criteria:相当于SQL的where,下面是Criteria常用方法及作用
3、Sort:创建查询排序
注解@Id,数据库中的主键字段名为_id
//用户名
@Id
private String user_name;
别名用@Field注解,数据库中的字段名为fName,而不是user_name
@Field("fName")
private String user_name;
欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。