Springmvc+mongoTemplate整合

首先在配置中加入

<!-- 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的表名,很久都測試不出來數據。在這裏記錄一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章