首先在配置中加入
<!-- MongoDB配置 --> <mongo:mongo-client replica-set="${jdbc.mongoDB.replicaSet}" credentials="${jdbc.mongoDB.credentials}" id="mongo"> <mongo:client-options write-concern="SAFE" connections-per-host="100" threads-allowed-to-block-for-connection-multiplier="50"/> </mongo:mongo-client> <mongo:db-factory id="mongoDbFactory" dbname="XXX" mongo-ref="mongo"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> </bean>
然後寫出工具類
@Component public class MongoCacheUtil { @Autowired(required = false) private MongoTemplate mongoTemplate; public void saveMsg(RecordDetailDto recordDetailDto) { mongoTemplate.save(recordDetailDto, ImConstant.ZM_IM_RECORD_DETAIL); } public List<RecordDetailDto> findRecordDetail(RecordDetailDto recordDetailDto, Integer start, Integer size) { Query query = new Query(); query.skip(start); query.limit(size); query.addCriteria(Criteria.where("fCommunicationRecordId").is(recordDetailDto.getfCommunicationRecordId()).andOperator(Criteria.where("deleteFlag").is(ImConstant.DB_CORRECT))); query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "fSendTime"))); return mongoTemplate.find(query, RecordDetailDto.class, ImConstant.ZM_IM_RECORD_DETAIL); } public Long getMsgCount(RecordDetailDto recordDetailDto) { Query query = new Query(); query.addCriteria(Criteria.where("fCommunicationRecordId").is(recordDetailDto.getfCommunicationRecordId()).andOperator(Criteria.where("deleteFlag").is(ImConstant.DB_CORRECT))); return mongoTemplate.count(query, RecordDetailDto.class, ImConstant.ZM_IM_RECORD_DETAIL); } public RecordDetailDto getLastMsg(RecordDetailDto recordDetailDto) { Query query = new Query(); query.skip(0); query.limit(1); query.addCriteria(Criteria.where("fCommunicationRecordId").is(recordDetailDto.getfCommunicationRecordId()).andOperator(Criteria.where("deleteFlag").is(ImConstant.DB_CORRECT))); query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "fSendTime"))); return mongoTemplate.findOne(query, RecordDetailDto.class, ImConstant.ZM_IM_RECORD_DETAIL); } public RecordDetailDto getLastMsgByFromAndTargetUser(RecordDetailDto recordDetailDto) { Query query = new Query(); query.addCriteria(Criteria.where("fTargetUser").is(recordDetailDto.getfTargetUser()).orOperator(Criteria.where("fTargetUser").is(recordDetailDto.getfFromUser()))); query.addCriteria(Criteria.where("fFromUser").is(recordDetailDto.getfFromUser()).orOperator(Criteria.where("fFromUser").is(recordDetailDto.getfTargetUser()))); query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "fSendTime"))); return mongoTemplate.findOne(query, RecordDetailDto.class, ImConstant.ZM_IM_RECORD_DETAIL); } //邏輯刪除 public void deleteByMsgId(String fMessageId) { Update update = new Update(); update.set("deleteFlag", ImConstant.DB_DELETE); mongoTemplate.updateMulti(Query.query(Criteria.where("fMessageId").is(fMessageId)), update, RecordDetailDto.class, ImConstant.ZM_IM_RECORD_DETAIL); } }
在代碼之中調用就可以了,這裏只是在業務邏輯中用到了這些,只寫了這些
在測試過程中,因爲mongoTemplate沒有加mongo的表名,很久都測試不出來數據。在這裏記錄一下