一、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; } } 完成一个小模块了!!!
文章来源: 在SSM中整合MongoDB