当前位置:网站首页>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,通过自定义扩展接口接入
边栏推荐
- Personal digestion of DDD
- Leecode brush questions record sword finger offer 43 The number of occurrences of 1 in integers 1 to n
- Imeta | Chen Chengjie / Xia Rui of South China Agricultural University released a simple method of constructing Circos map by tbtools
- Leecode brush questions record sword finger offer 11 Rotate the minimum number of the array
- Devops can help reduce technology debt in ten ways
- How to set encoding in idea
- System activity monitor ISTAT menus 6.61 (1185) Chinese repair
- Data sharing of the 835 postgraduate entrance examination of software engineering in Hainan University in 23
- VTK volume rendering program design of 3D scanned volume data
- Learn to use code to generate beautiful interface documents!!!
猜你喜欢
File and image comparison tool kaleidoscope latest download
The way of intelligent operation and maintenance application, bid farewell to the crisis of enterprise digital transformation
Hero League | King | cross the line of fire BGM AI score competition sharing
Alexnet experiment encounters: loss Nan, train ACC 0.100, test ACC 0.100
What can the interactive slide screen demonstration bring to the enterprise exhibition hall
英雄联盟|王者|穿越火线 bgm AI配乐大赛分享
用tkinter做一个简单图形界面
Data analysis course notes (V) common statistical methods, data and spelling, index and composite index
. Bytecode structure of class file
【软件逆向-求解flag】内存获取、逆变换操作、线性变换、约束求解
随机推荐
5种不同的代码相似性检测,以及代码相似性检测的发展趋势
2022/2/10 summary
Three sentences to briefly introduce subnet mask
37 pages Digital Village revitalization intelligent agriculture Comprehensive Planning and Construction Scheme
一图看懂对程序员的误解:西方程序员眼中的中国程序员
JS+SVG爱心扩散动画js特效
Why should a complete knapsack be traversed in sequence? Briefly explain
Five different code similarity detection and the development trend of code similarity detection
File and image comparison tool kaleidoscope latest download
Article management system based on SSM framework
Advanced learning of MySQL -- Fundamentals -- four characteristics of transactions
stm32F407-------SPI通信
What is web penetration testing_ Infiltration practice
Mujoco second order simple pendulum modeling and control
Jenkins' user credentials plug-in installation
Hero League | King | cross the line of fire BGM AI score competition sharing
Data analysis course notes (III) array shape and calculation, numpy storage / reading data, indexing, slicing and splicing
Personal digestion of DDD
基于SSM框架的文章管理系统
How to get started and improve test development?