MongoDB学习笔记【part5】基于 MongoRepository 开发CURD

导读:本篇文章讲解 MongoDB学习笔记【part5】基于 MongoRepository 开发CURD,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、MongoRepository

        Spring Data 提供了对 mongodb 数据访问的支持,只需继承 MongoRepository 类,并按照 Spring Data 规范就可以实现对 mongodb 的操作。

SpringData 方法定义规范:

在这里插入图片描述

在这里插入图片描述

注意事项:
  1. 不能随便声明,必须要符合一定的规范
  2. 查询方法以find、read、get开头
  3. 涉及条件查询时,条件的属性用条件关键字连接
  4. 条件属性首字母需要大写
  5. 支持属性的级联查询,但如果当前类有符合条件的属性则优先使用,而不使用级联属性;若需要使用级联属性,则属性之间使用_强制进行连接

准备步骤:

第一步,创建接口,继承 MongoRepository。

创建接口继承 MongoRepository ,并用 @Repository 标识持久层。

@Repository
public interface UserRepository extends MongoRepository<User,String> {
    
}

MongoRepository 其中有两个泛型 <T,TD>,T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId 。

第二步,自动注入MongoRepository。
    @Autowired
    private MongoRepository mongoRepository;

二、实现 CURD

1.添加一个文档
/**
 * 1.添加
 */
@Test
public void createUser() {
    User user = new User();
    user.setName("parker");
    user.setNumber(4);
    user.setPosition("defender");
    User insert_user = (User) mongoRepository.save(user);

    System.out.println(insert_user);
}
2.查询所有
/**
 * 2.查询所有
 */
@Test
public void findAll() {
    List list = userRepository.findAll();
    System.out.println(list);
}
3.通过id查询
/**
 * 3.id查询
 */
@Test
public void findById() {
    User user = (User) userRepository.findById("63cbf57d92912c3d57276510").get();
    System.out.println(user);
}
4.条件查询
/**
 * 4.条件查询
 */
@Test
public void findUserList1() {
    // select * from User where name="parker" and number=7
    //模拟构造条件
    User user = new User();
    user.setNumber(9);
    user.setPosition("striker");
    Example<User> userExample = Example.of(user);
    //查询
    List list = userRepository.findAll(userExample);
    System.out.println(list);

}
5.模糊查询
/**
 * 5.模糊查询
 */
@Test
public void findUserList2() {
    // select * from User where name like "park"
    //创建匹配器,设置查询条件
    ExampleMatcher matcher = ExampleMatcher.matching() //构建匹配器对象
            .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //设置默认字符串匹配方式:模糊查询
            .withIgnoreCase(true); //设置默认大小写忽略方式:true为忽略大小写
    //模拟构造条件
    User user = new User();
    user.setName("park");
    Example<User> userExample = Example.of(user,matcher);
    //查询
    List list = userRepository.findAll(userExample);
    System.out.println(list);

}
6.分页查询
/**
 * 6.分页查询
 */
@Test
public void findUserPage() {
    //构造排序器,设置排序方法
    Sort sort = Sort.by(Sort.Direction.ASC,"number");
    //构造分页器,设置分页参数
    //返回类型建议为Pageable接口,page=0代表第一页
    Pageable pageable = PageRequest.of(0, 5, sort);
    //创建匹配器,设置查询条件
    ExampleMatcher matcher = ExampleMatcher.matching() //构建匹配器对象
            .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //设置默认字符串匹配方式:模糊查询
            .withIgnoreCase(true); //设置默认大小写忽略方式:true为忽略大小写
    //模拟构造条件,不设置属性代表不进行条件匹配
    User user = new User();
    Example<User> userExample = Example.of(user,matcher);
    //查询
    Page<User> page = userRepository.findAll(userExample, pageable);
    System.out.println("总页数为:"+page.getTotalPages());
    System.out.println("查询的该页数据为:"+page.getContent());
}
7.修改

增加和修改都使用的是 save() 方法,save方法会判断传进来的实体对象是否有 _id 值。若无 ID ,则执行增加操作;若已有 ID,则转而去执行更新修改操作。

/**
 * 7.修改
 */
@Test
public void updateUser(){
    User user = (User) userRepository.findById("63cbf57d92912c3d57276510").get();
    user.setNumber(7);
    user.setPosition("striker");
    User update_user = (User) userRepository.save(user);
    System.out.println(update_user);
}
8.删除
/**
 * 8.删除
 */
@Test
public void deleteUser(){
    userRepository.deleteById("63cbf57d92912c3d57276510");
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84446.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!