• SpringMVC连接MongoDB操作数据库


    <?xml version="1.0" encoding="UTF-8"?>
    <!--
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you under the Apache License, Version 2.0 (the
       "License"); you may not use this file except in compliance
       with the License.  You may obtain a copy of the License at
    
         http://www.apache.org/licenses/LICENSE-2.0
    
       Unless required by applicable law or agreed to in writing,
       software distributed under the License is distributed on an
       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, either express or implied.  See the License for the
       specific language governing permissions and limitations
       under the License.    
    -->
    <ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
        <info
            organisation=""
            module="adagent"
            status="integration">
        </info>
        <configurations>
            <conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf" extends="runtime,master"/>
            <conf name="master" visibility="public" description="contains only the artifact published by this module itself, with no transitive dependencies"/>
            <conf name="compile" visibility="public" description="this is the default scope, used if none is specified. Compile dependencies are available in all classpaths."/>
            <conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
            <conf name="runtime" visibility="public" description="this scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath." extends="compile"/>
            <conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases." extends="runtime"/>
            <conf name="system" visibility="public" description="this scope is similar to provided except that you have to provide the JAR which contains it explicitly. The artifact is always available and is not looked up in a repository."/>
            <conf name="sources" visibility="public" description="this configuration contains the source artifact of this module, if any."/>
            <conf name="javadoc" visibility="public" description="this configuration contains the javadoc artifact of this module, if any."/>
            <conf name="optional" visibility="public" description="contains all optional dependencies"/>
        </configurations>
        <dependencies>
            <!--spring-->
            <dependency org="org.springframework" name="spring-core" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-beans" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-web" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-context" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-context-support" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-aop" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-expression" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-tx" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-jms" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-jdbc" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework" name="spring-webmvc" rev="4.0.4.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.slf4j" name="slf4j-api" rev="1.7.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.7.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.slf4j" name="jul-to-slf4j" rev="1.7.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.slf4j" name="log4j-over-slf4j" rev="1.7.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="ch.qos.logback" name="logback-classic" rev="1.1.2" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="ch.qos.logback" name="logback-core" rev="1.1.2" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <!--json序列化-->
            <dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="2.3.1" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="2.3.1" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="2.3.1" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <!--HTTP-->
            <dependency org="org.aopalliance" name="com.springsource.org.aopalliance" rev="1.0.0" />
            <dependency org="org.springframework.data"   name="spring-data-commons" rev="1.10.0.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.httpcomponents" name="httpclient" rev="4.3.3" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.httpcomponents" name="httpcore" rev="4.3.3" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.httpcomponents" name="httpmime" rev="4.3.3" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.ws.xmlschema" name="xmlschema-core" rev="2.1.0" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <!--cxf-->
            <dependency org="org.apache.cxf" name="cxf-bundle" rev="2.7.11" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.neethi" name="neethi" rev="3.0.3" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.velocity" name="velocity" rev="1.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.ws.xmlschema" name="xmlschema-core" rev="2.1.0" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="javax.xml.bind" name="jaxb-api" rev="2.2.4" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="javax.xml.soap" name="saaj-api" rev="1.3.5" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="com.sun.xml.bind" name="jaxb-xjc" rev="2.2.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="com.sun.xml.bind" name="jaxb-core" rev="2.2.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="com.sun.xml.messaging.saaj" name="saaj-impl" rev="1.3.23" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.codehaus.woodstox" name="woodstox-core-asl" rev="4.3.0" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.codehaus.woodstox" name="stax2-api" rev="3.1.4" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.jvnet.staxex" name="stax-ex" rev="1.7.7" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.codehaus.jettison" name="jettison" rev="1.3.5" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="wsdl4j" name="wsdl4j" rev="1.6.3" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            
            <!-- axis相关内容 -->
            <dependency org="axis" name="axis" rev="1.4" conf="compile->compile(*),master(*);runtime->runtime(*)" />
            <dependency org="axis" name="axis-jaxrpc" rev="1.4" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false" />
            <dependency org="axis" name="axis-saaj" rev="1.4" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false" />
            <dependency org="axis" name="axis-wsdl4j" rev="1.5.1" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false" />
            <dependency org="commons-discovery" name="commons-discovery" rev="0.2" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false" />
            
            
            <dependency org="com.google.code.gson" name="gson" rev="2.3" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="dom4j" name="dom4j" rev="1.6.1" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <!--
                <dependency org="org.apache.axis" name="axis"  rev="1.4"  conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/> 
            -->
            <dependency org="jaxen" name="jaxen" rev="1.1-beta-9" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/> 
            <dependency org="javax.validation" name="validation-api" rev="1.1.0.Final"  conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false" />
            <dependency org="javax.ws.rs" name="javax.ws.rs-api" rev="2.0-m10" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.springframework.data" name="spring-data-mongodb" rev="1.7.0.RELEASE" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.mongodb" name="mongo-java-driver" rev="3.0.0-rc1" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="org.apache.solr" name="solr-solrj" rev="5.1.0" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
                
            <dependency org="org.apache.commons" name="commons-vfs2" rev="2.0" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="commons-discovery" name="commons-discovery" rev="0.5" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
             <dependency org="commons-logging" name="commons-logging" rev="1.2" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
            <dependency org="javax.xml.rpc" name="javax.xml.rpc-api" rev="1.1" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/>
        </dependencies>
    </ivy-module>
    ivy.xml

    1、先引入以上的jar包:

    2、使用MongoTemplate:

    package com.d.service;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.mongodb.core.MongoTemplate;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    
    //@RestController
    //@RequestMapping("/test")
    public class TestService {
    
        private static final Logger logger = LoggerFactory.getLogger(TestService.class);
        
         @Autowired
         MongoTemplate mongoTemplate; 
        
        @RequestMapping(value = "/check", method = RequestMethod.GET)
        @ResponseBody
        public JsonResult<String> check(HttpServletRequest request) {
            try {
                logger.info("Address:{}", request.getLocalAddr());
                logger.info("Name:{}", request.getLocalName());
            } catch (Throwable e) {
                logger.error(e.getMessage());
                logger.debug(e.getMessage(), e);
            }
            return new JsonResult<String>("服务运行正常...").success();
        }
        
        @RequestMapping(value = "/add", method = RequestMethod.GET)
        @ResponseBody
        public JsonResult<String> add(HttpServletRequest request) {
            try {
                TestMo mo = new TestMo();
                mo.setId("1111");
                mo.setMessage("2222");
                mo.setName("3333");
                mongoTemplate.insert(mo);
                
            } catch (Throwable e) {
                logger.error(e.getMessage());
                logger.debug(e.getMessage(), e);
                return new JsonResult<String>(e.getMessage()).fail(0);
            }
            return new JsonResult<String>("服务运行正常...").success();
        }
    }

    3、使用Reosititory:

    package com.repository;
    
    import org.springframework.data.mongodb.repository.MongoRepository;
    
    import com.model.MaterialInfo;
    
    public interface MaterialRepository extends MongoRepository<MaterialInfo, String>{
    
    }

    Api:

    package com.api;
    
    import javax.validation.Valid;
    import javax.ws.rs.DELETE;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.Path;
    import javax.ws.rs.QueryParam;
    
    import org.springframework.data.domain.Sort;
    import org.springframework.data.mongodb.core.query.Query;
    
    import com.model.MaterialInfo;
    import com.utils.QueryResult;
    
    public interface MaterialApi {
    
        @POST
        @Path("insert")
        MaterialInfo insert(@Valid MaterialInfo materialInfo);
        
        @DELETE
        @Path("delete")
        void delete(@QueryParam("id") String id);
        
        @POST
        @Path("update")
        void update(@QueryParam("id") String id);
        
        @POST
        @Path("save")
        MaterialInfo save(@Valid MaterialInfo materialInfo);
    
        @GET
        @Path("get")
        MaterialInfo getBroadCastList(String id);
    
        @POST
        @Path("query/with/paging")
        public QueryResult<MaterialInfo> queryWithPaging(Query query, Sort sort, //
                int start, int limit);
    }

    Impl:

    package com.api.impl;
    
    import javax.ws.rs.Path;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.data.domain.Sort;
    import org.springframework.data.mongodb.core.MongoTemplate;
    import org.springframework.data.mongodb.core.query.Query;
    import org.springframework.stereotype.Component;
    
    import com.api.MaterialApi;
    import com.model.MaterialInfo;
    import com.repository.MaterialRepository;
    import com.utils.QueryResult;
    
    @Path("/material")
    @Component("materialImpl")
    public class MaterialApiImpl implements MaterialApi {
    
        @Autowired
        private MaterialRepository _materialRepository;
        
         @Autowired  
         @Qualifier("mongoTemplate")  
         MongoTemplate mongoTemplate;
        
        @Override
        public MaterialInfo insert(MaterialInfo materialInfo) {
            // TODO Auto-generated method stub
            return _materialRepository.insert(materialInfo);
        }
    
        @Override
        public void delete(String id) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public MaterialInfo save(MaterialInfo materialInfo) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public MaterialInfo getBroadCastList(String id) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public QueryResult<MaterialInfo> queryWithPaging(Query query, Sort sort, int start, int limit) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public void update(String id) {
            // TODO Auto-generated method stub
            
        }
    
    }

    Service:

    package com.service;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import com.api.MaterialApi;
    import com.model.MaterialInfo;
    
    @Component("materialService")
    public class MaterialService {
    
        public static Logger logger = LoggerFactory.getLogger(MaterialService.class);
        
        @Autowired
        MaterialApi _materialApi;
        
        public String save(MaterialInfo materialInfo){
            try {
                 _materialApi.save(materialInfo);
            } catch (Throwable e) {
                return e.getMessage();
            }
            return "success";
        }
    }

    以上!

     缺少关键的beans.xml文件 补上去:注意其中的<mongo:repositories />很重要;

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:util="http://www.springframework.org/schema/util"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
        xmlns:mongo="http://www.springframework.org/schema/data/mongo" 
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.5.xsd  
        http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.5.xsd 
        http://cxf.apache.org/jaxws  http://cxf.apache.org/schemas/jaxws.xsd
        http://cxf.apache.org/jaxrs  http://cxf.apache.org/schemas/jaxrs.xsd 
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
        <!-- 自动扫描 -->  
        <context:annotation-config />
        
        <mvc:annotation-driven />
    
        <context:component-scan base-package="com.d" />
        
        <import resource="classpath:com/d/beans.xml"/>    
        
        <mongo:repositories base-package="com.d.repository"></mongo:repositories>
        
        <context:property-placeholder location="classpath:com/d/mongodb.properties" />
         <!--
        <mongo:mongo id="mongo"  host="${mongodb.host}" port="${mongodb.port}" />  
        -->
         <mongo:mongo id="mongo" replica-set="${mongodb.replicaSet}" />  
         
        <mongo:db-factory id="mongoDbFactory" dbname="${mongodb.database}"  
            mongo-ref="mongo" />  
      
        <!-- mongo模板操作对象 -->  
        <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">  
            <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />  
        </bean>  
       
    </beans>
    以上文件加载只能加载classpath下的文件,加载外部文件需修改配置如下:
    <context:property-placeholder location="file:${app.home}/config/mongodb.properties" />
    重点在添加file标识

    mongodb.properties:
    #mongodb 
    mongodb.database=adbase
    mongodb.replicaSet=127.0.0.1:27017
    #mongodb.host=127.0.0.1
    #mongodb.port=27017
  • 相关阅读:
    JS-鼠标经过显示二级菜单
    CSS-论css如何纯代码实现内凹圆角
    JS-制作可伸缩的水平菜单栏
    CSS-混合布局的几种方法(正确的方法和错误的原因)
    JS-选项卡制作解释部分
    JS-制作网页特效——选项卡效果(水平,点击)
    JS-DOM 综合练习-动态添加删除班级成绩表
    JS-DOM对象知识点汇总(慕课)
    JS-window对象集合
    JS-节点属性(常用!)
  • 原文地址:https://www.cnblogs.com/liangblog/p/7753756.html
Copyright © 2020-2023  润新知