springboot 2.0 关于 MongoDB 的基础使用:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-mongodbartifactId>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.39version>
dependency>
配置如下:
spring.data.mongodb.authentication-database= # 用于签名的MongoDB数据库
spring.data.mongodb.database=test # 数据库名称
spring.data.mongodb.field-naming-strategy= # 使用字段名策略
spring.data.mongodb.grid-fs-database= # GridFs(网格文件)数据库名称
spring.data.mongodb.host=localhost # MongoDB服务器,不能设置为URI
spring.data.mongodb.password= # MongoDB服务器用户密码,不能设置为URI
spring.data.mongodb.port= # MongoDB服务器端口,不能设置为URI
spring.data.mongodb.repositories.type=auto # 是否启用MongoDB关于JPA规范的编程
spring.data.mongodb.uri=mongodb://localhost/test # MongoDB默认 URI
spring.data.mongodb.username= # MongoDB服务器用户名,不能设置为URI
如下图所示,设置 实现Serializable 接口, 在类名上 直接生成序列号;
demo 分享:
https://github.com/medoo-Ai/mongo
这里主要 列举了 MongoDB 的基础使用,CRUD
下面 是更新的API
查询的如下,基本涵盖了 MongoDB 的基础使用;
@Override
public DeleteResult deleteUser(Long id) {
Criteria criteria = Criteria.where("id").is(id);
Query query = Query.query(criteria);
return this.mongoTemplate.remove(query, User.class);
}
@Override
public List<User> findUsers(String userName, String note, Integer skip, Integer limit) {
Criteria regex = Criteria.where("userName").regex(userName).and("note").regex(note);
// 跳过 sikp 个, 返回 limit 个
Query query = Query.query(regex).skip(skip).limit(limit);
return this.mongoTemplate.find(query, User.class);
}
下面说下 ,集成JPA 的使用;
JPA 一般查询和 自定义的查询,这里说下自定义查询:
自定义 查询 , 自定义查询方法 ,需要在 main 方法中配置 该配置类;
@SpringBootApplication(scanBasePackages = "com.mongo.cn.demo")
@EnableMongoRepositories(basePackages = "com.mongo.cn.demo.repository",
// 自定义的后缀 Impl
repositoryImplementationPostfix = "Impl"
)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
自定义查询的是实现类如下:
@Repository
public class UserRepositoryImpl {
@Autowired
private MongoTemplate mongoTemplate;
public User findUserByIdOrUserName(Long id, String userName) {
// 使用criteria 创建
Criteria criteriaId = Criteria.where("id").is(id);
Criteria criteriaUserName = Criteria.where("userName").is(userName);
Criteria criteria = new Criteria();
// 使用$or
criteria.orOperator(criteriaId, criteriaUserName);
Query query = Query.query(criteria);
return mongoTemplate.findOne(query, User.class);
}
}
cirteria 创建查询,然后使用criteria 对象 构建 or 条件查询,完成自定义查询实现类;
完成以后在main 类中,进行自动类的配置;、