当前位置:网站首页>mongodb客户端操作(MongoRepository)
mongodb客户端操作(MongoRepository)
2022-07-06 17:01:00 【white_while】
orm
jpa
MongoRepository
springboot 整合
- 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
- springboot扫描注解
@EnableMongoRepositories(
basePackages = {"com.jl.ability.*"},
repositoryImplementationPostfix = "Impl")
repositoryImplementationPostfix 默认就是 Impl 后缀,可指定自定义仓储层接口实现类后缀
如mongodb其CustomizedUserRepository指定实现类customizedUserRepositoryImpl
- 定义接口和自定义接口及实现类
interface CustomizedUserRepository {
void someCustomMethod(User user);
}
class CustomizedUserRepositoryImpl implements CustomizedUserRepository {
public void someCustomMethod(User user) {
// Your custom implementation
}
}
@Repository
interface UserRepository extends CrudRepository<User, Long>, CustomizedUserRepository {
// Declare query methods here
}
curd基本操作
实体类
@Data
@Document(collection = "balloon_msg")
public class BalloonMsg {
@Id
private Long id;
private String sid;
private String body;
private Long from;
private int sex;
private Date ctime;
private String accid;
private Integer revNum;
private Integer replyNum;
}
接口
@Repository
public interface BalloonMsgMapper extends MongoRepository<BalloonMsg, Long>, CustomizedBalloonMsgMapper {
List<BalloonMsg> findByFromOrderByIdDesc(Long from, Pageable pageable);
@Query(value="{'$and': [{'from':?0}, {'sid':?1}]}", fields="{'_id': 1}")
List<BalloonMsg> findIdsByFromAndSid(Long from, String sid);
}
注意:
MongoRepository<BalloonMsg, Long>
BalloonMsg为集合映射实体类,Long为主键id类型
基本操作
支持 save,insert,find,delete
查询扩展支持原生查询语句
类似sql:select id from xxx where `from` = from and sid = sid
@Query(value="{'$and': [{'from':?0}, {'sid':?1}]}", fields="{'_id': 1}")
List<BalloonMsg> findIdsByFromAndSid(Long from, String sid);
支持jpa规范方法
类似sql:select * from balloon_msg where `from` = from order by id desc limit x, x
List<BalloonMsg> findByFromOrderByIdDesc(Long from, Pageable pageable);
自定义扩展
public interface CustomizedBalloonMsgMapper {
int incRevNumById(long id, int num);
int incReplyNumById(long id, int num);
}
public class CustomizedBalloonMsgMapperImpl implements CustomizedBalloonMsgMapper {
@Resource
private MongoTemplate mongoTemplate;
@Override
public int incRevNumById(long id, int num) {
Query query = Query.query(Criteria.where("_id").is(id));
Update update = new Update();
update.inc("revNum");
UpdateResult res = mongoTemplate.updateFirst(query, update, BalloonMsg.class);
return (int) res.getModifiedCount();
}
@Override
public int incReplyNumById(long id, int num) {
Query query = Query.query(Criteria.where("_id").is(id));
Update update = new Update();
update.inc("replyNum");
return (int) mongoTemplate.updateFirst(query, update, BalloonMsg.class).getModifiedCount();
}
}
此时的 BalloonMsgMapper 接口包含基本curd和自定义扩展的方法集
@Repository
public interface BalloonMsgMapper extends MongoRepository<BalloonMsg, Long>, CustomizedBalloonMsgMapper{
...
}
注意:
- 通用操作使用 Spring Data Repositories 其 MongoRepository
- 自定义扩展使用 MongoTemplate,通过自定义扩展接口接入
边栏推荐
- Three application characteristics of immersive projection in offline display
- Cross-entrpy Method
- build. How to configure the dependent version number in the gradle file
- Three methods to realize JS asynchronous loading
- Things like random
- [yolov5 6.0 | 6.1 deploy tensorrt to torch serve] environment construction | model transformation | engine model deployment (detailed packet file writing method)
- How to get started and improve test development?
- 什么是时间
- Business process testing based on functional testing
- 学习光线跟踪一样的自3D表征Ego3RT
猜你喜欢

X.509 certificate based on go language

@TableId can‘t more than one in Class: “com.example.CloseContactSearcher.entity.Activity“.

Geo data mining (III) enrichment analysis of go and KEGG using David database

深度学习之线性代数

Attention slam: a visual monocular slam that learns from human attention

Jenkins' user credentials plug-in installation

建立自己的网站(17)

Data analysis course notes (III) array shape and calculation, numpy storage / reading data, indexing, slicing and splicing

JWT signature does not match locally computed signature. JWT validity cannot be asserted and should

基于GO语言实现的X.509证书
随机推荐
集合(泛型 & List & Set & 自定义排序)
一图看懂对程序员的误解:西方程序员眼中的中国程序员
Three application characteristics of immersive projection in offline display
stm32F407-------DAC数模转换
Matlab learning notes
. Bytecode structure of class file
【vulnhub】presidential1
How to judge whether an element in an array contains all attribute values of an object
Leecode brush questions record sword finger offer 11 Rotate the minimum number of the array
stm32F407-------SPI通信
Why should a complete knapsack be traversed in sequence? Briefly explain
X.509 certificate based on go language
2021 SASE integration strategic roadmap (I)
Meet the level 3 requirements of ISO 2.0 with the level B construction standard of computer room | hybrid cloud infrastructure
Leecode brush questions record sword finger offer 43 The number of occurrences of 1 in integers 1 to n
Basic information of mujoco
The difference between redirectto and navigateto in uniapp
Leetcode (547) - number of provinces
【JokerのZYNQ7020】AXI_ EMC。
Encryption algorithm - password security