spring-data-mongodb提供了MongoTemplate和MongoRepository两种方式访问MongoDB,MongoRepository的方式访问较为简单,MongoTemplate方式较为灵活,这两种方式在Java对于MongoDB的运用中相辅相成。

一、基于MongoTemplate开发

引入依赖

org.springframework.boot

spring-boot-starter-data-mongodb

org.springframework.boot

spring-boot-starter-test

修改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 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 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 {

}

方法测试

@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 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 example = Example.of(new User(null,"李四",16));

List 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 example1 = Example.of(user3,matcher);

List list1 = userRepository.findAll(example1);

System.out.println(list1);//User(id=63acf24938e0d1033d50dc20, name=张三三, age=18)

//分页查询

Pageable pageable = PageRequest.of(0, 2);//设置分页参数:第1页 每页2条数据

Page 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();

}

}

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: