SpringBoot访问MongoDB数据库的两种方式
spring-data-mongodb提供了MongoTemplate和MongoRepository两种方式访问MongoDB,MongoRepository的方式访问较为简单,MongoTemplate方式较为灵活,这两种方式在Java对于MongoDB的运用中相辅相成。
一、基于MongoTemplate开发
引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>
修改yml配置
spring:
data:
mongodb:
#192.168.217.128根据自己的ip进行修改
#test是MongoDB的集合名称 也就是表名
uri: mongodb://192.168.217.128:27017/test
添加实体类
@Data @AllArgsConstructor @Document("User") //指定了这个模型类型所对应的集合名称即collection 表名 public class User { @Id //自动生成的主键ID 主键 不可重复 自带索引 private String id; private String name; private Integer age; }
方法测试
@SpringBootTest public class MongoTemplateTest { @Autowired private MongoTemplate mongoTemplate; @Test public void testMongoDB(){ //向表中插入数据 User user = new User(null,"张三",20); User user1 = new User(null,"李四",16); mongoTemplate.insert(user); mongoTemplate.insert(user1); //查询表中所有记录 List<User> userList = mongoTemplate.findAll(User.class); System.out.println(userList); //[User(id=63acf541e6af652ac74fd008, name=张三, age=20), // User(id=63acf541e6af652ac74fd009, name=李四, age=16)] //根据表中id查询记录 User user2 = mongoTemplate.findById("63acf541e6af652ac74fd008", User.class); System.out.println(user2);//User(id=63acf541e6af652ac74fd008, name=张三, age=20) //条件查询 Query query = new Query(Criteria.where("name").is("李四").and("age").is(16)); List<User> users = mongoTemplate.find(query, User.class); System.out.println(users);//[User(id=63acf541e6af652ac74fd009, name=李四, age=16)] //根据_id删除表中记录 Query query2 = new Query(Criteria.where("_id").is("63acf541e6af652ac74fd008")); DeleteResult remove = mongoTemplate.remove(query2, User.class); //获取删除记录的个数 long count = remove.getDeletedCount(); System.out.println(count);//1 //删除表中所有数据 Query query3 = new Query(); mongoTemplate.remove(query3,User.class); } }
二、基于MongoRepository开发
Spring Data提供了对MongoDB数据访问的支持,我们只需要继承MongoRepository类,按照Spring Data规范就可以了。
构建仓库
public interface UserRepository extends MongoRepository<User,String> { }
方法测试
@SpringBootTest public class MongoRepositoryTest { @Autowired private UserRepository userRepository; @Test public void test(){ //向数据库表中插入数据 User user = new User(null,"张三三",18); User user1 = new User(null,"李四",16); userRepository.save(user); userRepository.save(user1); //查询数据库表中所有记录 List<User> all = userRepository.findAll(); System.out.println(all); //[User(id=63acf24938e0d1033d50dc20, name=张三三, age=18), // User(id=63acf24938e0d1033d50dc21, name=李四, age=16)] //按照id查询表中数据 User user2 = userRepository.findById("63acf24938e0d1033d50dc20").get(); System.out.println(user2);//User(id=63acf24938e0d1033d50dc20, name=张三三, age=18) //按条件(姓名与年龄)查询 Example<User> example = Example.of(new User(null,"李四",16)); List<User> list = userRepository.findAll(example); System.out.println(list);//User(id=63acf24938e0d1033d50dc21, name=李四, age=16) //模糊查询 User user3 = new User(null,"三",18); //模糊查询匹配规则 ExampleMatcher matcher = ExampleMatcher.matching() .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) .withIgnoreCase(true);//忽略大小写 Example<User> example1 = Example.of(user3,matcher); List<User> list1 = userRepository.findAll(example1); System.out.println(list1);//User(id=63acf24938e0d1033d50dc20, name=张三三, age=18) //分页查询 Pageable pageable = PageRequest.of(0, 2);//设置分页参数:第1页 每页2条数据 Page<User> page = userRepository.findAll(pageable); System.out.println("Page的总页数是:" + page.getTotalPages() + ",Page的总记录条数是:" + page.getTotalElements()); //Page的总页数是:1 + ,Page的总记录条数是:2 //根据_id修改信息 User user4 = userRepository.findById("63acf24938e0d1033d50dc20").get(); user4.setName("王五");//将取出的信息修改其name userRepository.save(user4); //根据id删除 userRepository.deleteById("63acf24938e0d1033d50dc20"); //删除全部 userRepository.deleteAll(); } }
到此这篇关于SpringBoot访问MongoDB数据库的两种方式的文章就介绍到这了,更多相关SpringBoot访问MongoDB内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
从前端Vue到后端Spring Boot接收JSON数据的正确姿势(常见错误及问题)
这篇文章主要介绍了从前端Vue到后端Spring Boot接收JSON数据的正确姿势(常见错误及问题),本文将从前端Vue到后端Spring Boot,详细介绍接收JSON数据的正确姿势,帮助开发人员更好地处理JSON数据,感兴趣的朋友一起看看吧2024-02-02
最新评论