亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何去掉保存mongodb數(shù)據(jù)時出現(xiàn)的_class字段

 更新時間:2024年02月22日 08:43:15   作者:huas_mcfeng  
這篇文章主要給大家介紹了如何去掉保存mongodb數(shù)據(jù)時出現(xiàn)的_class字段,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

配置如下:

application.yml文件內(nèi)容如下

spring:
  data:
    mongodb:
      host: 192.168.9.234 #指定MongoDB服務(wù)地址
      port: 27017 #指定端口,默認(rèn)就為27017
      database: blog #指定使用的數(shù)據(jù)庫(集合)
      authentication-database: admin # 登錄認(rèn)證的邏輯庫名
      username: admin #用戶名
      password: 123456 #密碼
  main:
    banner-mode: off
server:
  port: 8080

公共類如下

IBasicDao類:

package com.zingrow.blog.common;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import java.util.List;

public interface IBasicDao<T> {
    /**
     * 查詢數(shù)據(jù)
     *
     * @param query
     * @return
     */

    List<T> find(Query query);

    /**
     * 分頁查詢
     *
     * @param query
     * @param start
     * @param size
     * @return
     */
    List<T> findList(Query query, int start, int size);


    /**
     * 根據(jù)ID查詢
     *
     * @param id
     * @return
     */
    T findOne(String id);

    /**
     * 插入一條數(shù)據(jù)
     *
     * @param entity
     */
    void insert(T entity);

    /**
     * 更新數(shù)據(jù)
     *
     * @param query
     * @param update
     * @return
     */
    UpdateResult update(Query query, Update update);

    /**
     * 根據(jù)實(shí)體類刪除數(shù)據(jù)
     *
     * @param entity
     * @return
     */
    DeleteResult delete(T entity);


    /**
     * 根據(jù)query刪除數(shù)據(jù)
     *
     * @param query
     * @return
     */

    DeleteResult remove(Query query);

    long count();

    long count(Query query);

    void save(T entity);

    List<T> findAll();

    List<T> findByKeyAndValue(String key, String Value);

    List<T> findByKeyAndValue(String key, String Value, int start, int limit);

    void upsert(Query query, Update update);

    MongoTemplate getMongoTemplate();
}

其實(shí)現(xiàn)類BasicDao內(nèi)容如下

package com.zingrow.blog.common;

import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import java.lang.reflect.ParameterizedType;
import java.util.List;

public class BasicDao<T> implements IBasicDao<T> {
    private Class<T> clazz;

    public BasicDao() {
        ParameterizedType type = (ParameterizedType) getClass().getGenericSuperclass();
        clazz = (Class<T>) type.getActualTypeArguments()[0];
    }

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public List<T> find(Query query) {
        return mongoTemplate.find(query, clazz);
    }

    @Override
    public List<T> findList(Query query, int start, int size) {
        query.with(Sort.by(new Sort.Order(Sort.Direction.ASC, "_id")))
                .skip(start)
                .limit(size);
        return mongoTemplate.find(query, clazz);
    }

    @Override
    public T findOne(String id) {
        Query query = new Query();
        query.addCriteria(new Criteria("_id").is(id));
        return mongoTemplate.findOne(query, clazz);
    }

    @Override
    public void insert(T entity) {
        mongoTemplate.insert(entity);
    }

    @Override
    public UpdateResult update(Query query, Update update) {
        return mongoTemplate.updateMulti(query, update, clazz);
    }

    @Override
    public DeleteResult delete(T entity) {
        return mongoTemplate.remove(entity);
    }

    @Override
    public DeleteResult remove(Query query) {
        return mongoTemplate.remove(query, clazz);
    }

    public DeleteResult remove(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(id));
        return mongoTemplate.remove(query, clazz);
    }

    @Override
    public long count() {
        Query query = new Query();
        return mongoTemplate.count(query, clazz);
    }

    @Override
    public long count(Query query) {
        return mongoTemplate.count(query, clazz);
    }

    @Override
    public void save(T entity) {
        mongoTemplate.save(entity);
    }

    @Override
    public List<T> findAll() {
        Query query = new Query();
        return find(query);
    }

    @Override
    public List<T> findByKeyAndValue(String key, String Value) {
        Query query = new Query(Criteria.where(key).is(Value));

        return mongoTemplate.find(query, clazz);
    }

    @Override
    public List<T> findByKeyAndValue(String key, String Value, int start, int limit) {
        Query query = new Query(Criteria.where(key).is(Value));
        query.skip(start).limit(limit);
        return mongoTemplate.find(query, clazz);
    }

    @Override
    public void upsert(Query query, Update update) {
        mongoTemplate.upsert(query, update, clazz);
    }

    @Override
    public MongoTemplate getMongoTemplate() {
        return mongoTemplate;
    }
}

實(shí)體類(Article)如下

package com.zingrow.blog.entity;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "article")
public class Article {

    @Id
    private String id;
    private String title;
    private String classify;
    private String content;
    private String time;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getClassify() {
        return classify;
    }

    public void setClassify(String classify) {
        this.classify = classify;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public Article(String id, String title, String classify, String content, String time) {
        this.id = id;
        this.title = title;
        this.classify = classify;
        this.content = content;
        this.time = time;
    }

    @Override
    public String toString() {
        return "Article{" +
                "id='" + id + '\'' +
                ", title='" + title + '\'' +
                ", classify='" + classify + '\'' +
                ", content='" + content + '\'' +
                ", time='" + time + '\'' +
                '}';
    }
}

服務(wù)實(shí)現(xiàn)類(ArticleServiceImpl)

package com.zingrow.blog.service;
import com.zingrow.blog.common.BasicDao;
import com.zingrow.blog.entity.Article;
import org.springframework.stereotype.Service;

@Service
public class ArticleServiceImpl extends BasicDao<Article> {
}

控制類(ArticleController)

package com.zingrow.blog.contronller;
import com.zingrow.blog.entity.Article;
import com.zingrow.blog.service.ArticleServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@CrossOrigin(value = "*", maxAge = 300)
public class ArticleController {
    @Autowired
    private ArticleServiceImpl articleService;
    @GetMapping("add")
    public String add(Article article) {
        articleService.insert(article);
        return article.toString();
    }
}

成功插入數(shù)據(jù)后

發(fā)現(xiàn)多了個_class字段,解決辦法如下

新建配置類(MongoConfig)

package com.zingrow.blog.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;

@Configuration
public class MongoConfig {

    @Bean(name = "mongoTemplate")
    public MongoTemplate mongoTemplate(MongoDatabaseFactory mongoDatabaseFactory, MongoMappingContext mongoMappingContext) {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDatabaseFactory);
        MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
        //去掉_class字段
        mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));
        return new MongoTemplate(mongoDatabaseFactory,mappingConverter);
    }
}

結(jié)果如下

失敗案例:

新建配置類(在實(shí)際項目引入時可能會報MongoDbFactory已被廢棄)

@Configuration
public class MongoConfig {
 
    @Bean
    public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context, BeanFactory beanFactory) {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
        MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
        try {
            mappingConverter.setCustomConversions(beanFactory.getBean(CustomConversions.class));
        } catch (NoSuchBeanDefinitionException ignore) {
        }
 
        // Don't save _class to mongo
        mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));
        return mappingConverter;

以上就是如何去掉保存mongodb數(shù)據(jù)時出現(xiàn)的_class字段的詳細(xì)內(nèi)容,更多關(guān)于mongodb出現(xiàn)_class字段的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mongodb單字段索引應(yīng)用詳解

    Mongodb單字段索引應(yīng)用詳解

    mongodb支持在文檔中的任何一個字段建立單字段索引,包括文檔的頂級字段,針對嵌入式文檔建立索引或者針對嵌入式文檔的某個字段建立索引,本文給大家介紹Mongodb單字段索引的相關(guān)知識,感興趣的朋友一起看看吧
    2024-07-07
  • Mongodb的oplog詳解

    Mongodb的oplog詳解

    這篇文章主要介紹了Mongodb的oplog詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • MongoDB的mongo shell常用操作方法及操作腳本筆記

    MongoDB的mongo shell常用操作方法及操作腳本筆記

    mongo shell即相當(dāng)于SQL語句在關(guān)系型數(shù)據(jù)庫中的作用,MongoDB使用JavaScript作為shell操作命令,這里我們就來整理MongoDB的mongo shell常用操作方法及操作腳本筆記
    2016-07-07
  • MongoDB副本集丟失數(shù)據(jù)的測試實(shí)例教程

    MongoDB副本集丟失數(shù)據(jù)的測試實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于MongoDB副本集丟失數(shù)據(jù)的測試的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • MongoDB 事務(wù)支持詳解

    MongoDB 事務(wù)支持詳解

    這篇文章主要介紹了MongoDB 事務(wù)支持詳解的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Mongodb 啟動命令mongod參數(shù)說明(中文翻譯)

    Mongodb 啟動命令mongod參數(shù)說明(中文翻譯)

    這篇文章主要介紹了Mongodb 啟動命令mongod參數(shù)說明(中文翻譯)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 開發(fā)分布式醫(yī)療掛號系統(tǒng)MongoDB集成實(shí)現(xiàn)上傳醫(yī)院接口

    開發(fā)分布式醫(yī)療掛號系統(tǒng)MongoDB集成實(shí)現(xiàn)上傳醫(yī)院接口

    這篇文章主要介紹了開發(fā)分布式醫(yī)療掛號系統(tǒng)MongoDB集成實(shí)現(xiàn)上傳醫(yī)院接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • MongoDB釋放空閑空間的幾種常用方法

    MongoDB釋放空閑空間的幾種常用方法

    這篇文章主要給大家介紹了關(guān)于MongoDB釋放空閑空間的幾種常用方法,分別包括compact、db.repairDatabase()、secondary節(jié)點(diǎn)重同步以及db.copyDatabase()這幾種方法,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-07-07
  • 數(shù)據(jù)庫MongoDB啟動的三種方式

    數(shù)據(jù)庫MongoDB啟動的三種方式

    MongoDB是一個流行的分布式文檔型數(shù)據(jù)庫,用于存儲非結(jié)構(gòu)化數(shù)據(jù),本文給大家總結(jié)了數(shù)據(jù)庫MongoDB啟動的三種方式,講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-07-07
  • MongoDB搭建高可用集群的完整步驟(3個分片+3個副本)

    MongoDB搭建高可用集群的完整步驟(3個分片+3個副本)

    這篇文章主要給大家介紹了關(guān)于MongoDB搭建高可用集群(3個分片+3個副本)的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論