在SSM中整合MongoDB

匿名 (未验证) 提交于 2019-12-02 22:56:40

一、SSM整合MongoDB

在搭建好了SSM框架之后想着再把学过的MongoDB也搞进来用用。

1、导入依赖

   <dependency>       <groupId>org.springframework.data</groupId>       <artifactId>spring-data-mongodb</artifactId>       <version>2.0.9.RELEASE</version>     </dependency>

整个项目中导入这一个依赖就够了。由于我之前练手在项目中导入了:

       <dependency>           <groupId>org.mongodb</groupId>           <artifactId>mongodb-driver</artifactId>           <version>3.6.3</version>       </dependency>

这个驱动,结果最后运行程序的时候直接报错:

Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.bson.types.ObjectId.(III)V from class org.mongojack.internal.stream.ObjectIdConvertor.

https://blog.csdn.net/torrytang/article/details/50606588

2、配置相关数据库连接文件

 #DB name mongo.dbname = test #username mongo.username = #password mongo.password = #host mongo.host = 127.0.0.1 #port mongo.port = 27017 #xiancheng zui da zu se shu mongo.connectionsPerHost= 8 #xiancheng dui lie shu mongo.threadsAllowedToBlockForConnectionMultiplier= 4 #connectTimeout ms mongo.connectTimeout= 1500 #maxWaitTime mongo.maxWaitTime= 1500 #autoConnect mongo.autoConnectRetry= true #socketKeepAlive mongo.socketKeepAlive= true #socketTimeout mongo.socketTimeout=1500 #du xie fen li mongo.slaveOk=true 

3、配置MongoDB的配置文件

    <!--引入MongoDB连接文件-->     <context:property-placeholder location="classpath*:mongodb.properties" ignore-unresolvable="true"/>     <!--连接MongoDB服务器-->     <mongo:mongo-client id="mongo" host="${mongo.host}" port="${mongo.port}" >         <mongo:client-options connections-per-host="${mongo.connectionsPerHost}"                        threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"                        connect-timeout="${mongo.connectTimeout}"                        max-wait-time="${mongo.maxWaitTime}"                        socket-keep-alive="${mongo.socketKeepAlive}"                        socket-timeout="${mongo.socketTimeout}"/>     </mongo:mongo-client>      <mongo:db-factory id="mongoDbFactory"  dbname="${mongo.dbname}"  mongo-ref="mongo"/>       <!--配置mongoTemplate-->     <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成-->     <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">         <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>     </bean> 

这里也是踩了坑,因为之前项目中本来就用了mysql,然后有一个 db.properties 文件已经导入到项目中,因此我一开始也是向导入 db.properties 一样使用,结果报错:

"Could not resolve placeholder"

原因是Spring在管理配置文件的时候冲突了,因此需要在导入的配置项目中加上:ignore-unresolvable="true"

 <context:property-placeholder location="mongodb.properties" ignore-unresolvable="true"   />   <context:property-placeholder location="db.properties" ignore-unresolvable="true"   />  

这样就能解决冲突问题了

4、将mongodb.xml文件引入spring.xml文件中好一起加载

  <!--SSM集成mongodb-->     <import resource="classpath*:mongodb.xml"/>

5、最后就是写相关的类进行开发了

service:

 @Service public class StuMongodb {     private static Logger log = Logger.getLogger(StuMongodb.class);      @Autowired     private MongoTemplate mongoTemplate;      public List<Stu> findAll(){         List<Stu> stuList = mongoTemplate.findAll(Stu.class);         return stuList;     } } 

controller:

 @Controller @RequestMapping(value = "/hrms/emp") public class StuMongodbController {     @Autowired     private StuMongodb stuMongodb;      @RequestMapping(value = "/getEmpList",method = RequestMethod.GET)     public ModelAndView findAll(){         ModelAndView mv = new ModelAndView();         List<Stu> stus = stuMongodb.findAll( );         mv.addObject("stus",stus);         mv.setViewName("test");         return mv;     } }

完成一个小模块了!!!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!