Spring5.x集成MongoDB

Spring5.x集成MongoDB,第1张

Spring5.x集成MongoDB

  1. 引入依赖

    在pom.xml中添加依赖,只需在spring中引入spring-data-mongodb依赖就好,里面会有MongoDB驱动和其他支持依赖

            
            
                org.springframework.data
                spring-data-mongodb
                2.0.6.RELEASE
            

    注意版本问题,每个版本对应的spring版本都不一样,本项目的spring版本是5.0.5.RELEASE,所以引入的spring-data-mongodb的版本是2.0.6.RELEASE,和spring版本适配

  2. 编写配置

    在module.properties中添加属性

    #MongoDB配置
    #主机
    mongo.host=localhost
    #端口号
    mongo.port=27017
    #库名称
    mongo.dbname=ksc
    #账号
    mongo.username=zhupeng
    #密码
    mongo.password=zhupeng
    #每个主机允许的连接数,一个线程变为可用的最大阻塞数
    mongo.connectionsPerHost=8
    #线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值
    mongo.threadsAllowedToBlockForConnectionMultiplier=4
    #连接超时时间(毫秒)
    mongo.connectTimeout=1000
    #最大等待时间
    mongo.maxWaitTime=1500
    #scoket保持活动
    mongo.socketKeepAlive=true
    #scoket超时时间
    mongo.socketTimeout=1500

    此时需要编写spring-mongo.xml配置文件

    
    s
        
        
        
    
    
            
        
    ​
        
        
        
        
            
        
        
        

  3. 编写代码

    我们定义一个doc实体KnowledgeDoc,用于插入的数据

    @document(collection = "knowledge_data")
    public class KnowledgeDoc extends baseDoc {
        @Field("code")
        private String code;
        @Field("name")
        private String name;
        @Field("source")
        private String source;
        @Field("tag")
        private List tag;
        @Field("document")
        private String document;
        @Field("status")
        private Boolean status;
        @Field("customize")
        private T customize;
        @Field("description")
        private String description;
        //此处省略setter getter方法
    }

    编写repository仓储类

    public interface KnowledgeRepository extends MongoRepository {
    ​
    }

    此处整合MongoDB的两种方法:MongoRepository和MongoTemplate,灵活使用,默认需要MongoTemplate就可以了,本人在整合MongoRepository时出现大坑,网上的配置写法都一样,但都是错误的,都是相互copy的吧。

    编写service接口和实现类

    public interface KnowledgeService {
        
        Object addData();
    }
    
    @Service
    public class KnowledgeServiceImpl implements KnowledgeService {
    ​
        //注入方式一:构造注入MongoRepository
        private KnowledgeRepository repository;
        public KnowledgeServiceImpl(KnowledgeRepository repository) {
            this.repository = repository;
        }
    ​
        //注入方式二:Autowired注入MongoTemplate
        @Autowired
        private MongoTemplate mongoTemplate;
    ​
        
        @Override
        public Object addData() {
            KnowledgeDoc knowledgeDoc = new KnowledgeDoc();
            SubprojectDoc subprojectDoc = new SubprojectDoc();
            subprojectDoc.setDeliveryConfirmationNo("201810260071");
            subprojectDoc.setProductName("专案管理—专案规格书—WF");
            subprojectDoc.setStage("1");
            subprojectDoc.setStatus(false);
            subprojectDoc.setSubprojectCode("20181026007");
            subprojectDoc.setSubprojectName("20181026007");
            CustomizeDoc customizeDoc = new CustomizeDoc();
            List subprojectDocs = new ArrayList<>();
            subprojectDocs.add(subprojectDoc);
            customizeDoc.setSubproject(subprojectDocs);
            customizeDoc.setProjectCode("00000001");
            customizeDoc.setProjectName("认购订单");
            customizeDoc.setCustomerCode("0000130503");
            customizeDoc.setCustomerName("太平洋自行车");
            customizeDoc.setOrderNumber("180090912");
            customizeDoc.setServiceCode("02276000");
            knowledgeDoc.setCustomize(customizeDoc);
            knowledgeDoc.setCode("00000001");
            knowledgeDoc.setName("认购订单");
            knowledgeDoc.setDescription("专案管理—专案规格书—WF");
            knowledgeDoc.setSource("CRM");
            knowledgeDoc.setStatus(false);
            knowledgeDoc.setTenantsid(Long.parseLong(ApplicationToken.tenantSid));
            knowledgeDoc.setCreateName("张三");
            knowledgeDoc.setCreateTime(new Date());
            System.out.println(ChangeUtil.beanToString(knowledgeDoc));
            //方式一:使用MongoRepository实现新增数据
            repository.insert(knowledgeDoc);
            //方式二:使用MongoTemplate实现新增数据
            //mongoTemplate.insert(knowledgeDoc);
            return "新增成功";
        }
    }

    调用,此处木有用postman工具调用接口。在项目启动后,自动执行,去调用新增方法,起到postman调用接口的效果

    public class LoadServiceImpl implements ILoadService {
        Logger logger = LoggerFactory.getLogger(LoadServiceImpl.class);
    ​
        private KnowledgeService knowledgeService;
    ​
        @Override
        public Object onLoad(Map map) throws Exception {
            Object data = knowledgeService.addData();
            logger.info((String) data);
            return "OK";
        }
    }
     
  4. 测试

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5081906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存