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

一、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");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Parker7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值