mongodb基于MongoRepository开发CRUD

基于MongoRepository开发CRUD

1 实现

Spring Data提供了对mongodb数据访问的支持,我们只需要继承MongoRepository类,按照Spring Data规范就可以了

SpringData 方法定义规范

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nlSdCpp2-1684581540741)(mongodb.assets/1671862679594.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LOlso8RG-1684581540742)(mongodb.assets/1671862691209.png)]

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

2 添加Repository类

添加repository.UserRepository类

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

3 添加实体

@Data
@Document("User")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    private String email;
    private String createDate;
}

4 添加测试类

在/test/java下面添加测试类:

@SpringBootTest
public class MongoApplicationTests {
    @Autowired
    private UserRepository userRepository;

    //新增
    @Test
    public void insert() {
        User user = new User();
        user.setName("王五");
        user.setAge(18);
        user.setSex(true);
        User save = userRepository.save(user);
        System.out.println("save = " + save);
    }

    //查询所有
    @Test
    public void findAll() {
        List<User> userList = userRepository.findAll();
        userList.forEach(System.out::println);
    }

    //id查询
    @Test
    public void findById() {
        User user = userRepository.findById("64689839fc973a5811a95199").get();
        System.out.println(user);
    }

    //条件查询
    @Test
    public void findUserList() {
        User user = new User();

    }

    //模糊查询
    @Test
    public void findUsersLikeName() {
        //创建匹配器,即如何使用查询条件
        ExampleMatcher matching = ExampleMatcher.matching()
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)//改变默认字符串匹配方式:模糊查询
                .withIgnorePaths("_id","sex","_class") //忽略字段
                .withIgnoreCase(true);  //改变默认大小写忽略方式:忽略大小写

        User user = new User();
        user.setName("a");
        Example<User> userExample = Example.of(user, matching);
        List<User> userList = userRepository.findAll(userExample);
        userList.forEach(System.out::println);
    }

    //模糊加分页查询
    @Test
    public void findUsersPage() {
        //设置分页参数
        //0为第一页
        Pageable pageable = PageRequest.of(0, 3);
        //创建匹配器,即如何使用查询条件
        ExampleMatcher matcher = ExampleMatcher.matching() //构建对象
                .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())//根据name模糊查询
                .withIgnorePaths("_id","sex","_class"); //忽略字段


        User user = new User();
        user.setName("a");
        //创建实例
        Example<User> userExample = Example.of(user,matcher);
        Page<User> pages = userRepository.findAll(userExample, pageable);
        System.out.println("pages = " + pages);
        pages.forEach(System.out::println);
    }
    //修改
    @Test
    public void updateUser() {
        User user = userRepository.findById("64689839fc973a5811a95199").get();
        user.setName("赵六");
        user.setAge(21);
        user.setSex(true);
        User save = userRepository.save(user);
        System.out.println("save = " + save);
    }

    //删除
    @Test
    public void delete() {
        userRepository.deleteById("64689839fc973a5811a95199");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值