栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring5.x集成MongoDB

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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. 测试

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425518.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号