博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在SSM中整合MongoDB
阅读量:3756 次
发布时间:2019-05-22

本文共 4041 字,大约阅读时间需要 13 分钟。

一、SSM整合MongoDB

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

1、导入依赖

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

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

org.mongodb
mongodb-driver
3.6.3

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

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

 解决方案就是删除这个依赖:参考——

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

#DB namemongo.dbname = test#usernamemongo.username =#passwordmongo.password =#hostmongo.host = 127.0.0.1#portmongo.port = 27017#xiancheng zui da zu se shumongo.connectionsPerHost= 8#xiancheng dui lie shumongo.threadsAllowedToBlockForConnectionMultiplier= 4#connectTimeout msmongo.connectTimeout= 1500#maxWaitTimemongo.maxWaitTime= 1500#autoConnectmongo.autoConnectRetry= true#socketKeepAlivemongo.socketKeepAlive= true#socketTimeoutmongo.socketTimeout=1500#du xie fen limongo.slaveOk=true

3、配置MongoDB的配置文件

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

"Could not resolve placeholder"

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

这样就能解决冲突问题了

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

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

service:

@Servicepublic class StuMongodb {    private static Logger log = Logger.getLogger(StuMongodb.class);    @Autowired    private MongoTemplate mongoTemplate;    /**     * 查询所有     * @return     */    public List
findAll(){ List
stuList = mongoTemplate.findAll(Stu.class); return stuList; } /** * 更新 * @param stu */ public void update(Stu stu){ Query query = new Query(Criteria.where("name").is(stu.getName())); Update update = new Update(); //Update update = Update.update("age",stu.getAge()); update.set("age",stu.getAge()); update.set("gender",stu.getGender()); //更新字段,不插入实体类 mongoTemplate.updateFirst(query,update,Stu.class); //更新字段同时插入实体类 // mongoTemplate.updateMulti(query,update,Stu.class); } /** * 插入 */ public void insert(Stu stu){ List
list = new ArrayList<>(); list.add(stu); log.info("插入"); try { mongoTemplate.insert(list,Stu.class); } catch (Exception e) { e.printStackTrace(); } } /** * 删除 */ public void delete(Object str){ Query query = new Query(new Criteria("_id").is(str)); //Object object = mongoTemplate.find(query,Stu.class); try { mongoTemplate.findAllAndRemove(query,Stu.class); } catch (Exception e) { e.printStackTrace(); } }}

 在做更新的时候由于不是很了解方法采坑了,还有就是最后的删除,因为最开始一直用的是remove方法,一直显示

No id property found for object of type

搞了好久一直不过,以为是实体类要把id改为_id,因为MongoDB的文档中的id字段是“_id”,但是还是不行,最后按照换了方法就ok了。

还有一点就是在执行删除的时候,我是按照id来删除的嘛,所以在postman请求的时候传进来的值

    "_id" : ObjectId("5b4d6d1a4f59197946cfdc30")

是这个整个后面部分也是一直不成功,最后经人指点应该直接传入ObjectId中的内容。

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
stus = stuMongodb.findAll( ); mv.addObject("stus",stus); mv.setViewName("test"); return mv; } @RequestMapping(value = "/update",method = RequestMethod.POST) public void update(Stu stu){ stuMongodb.update(stu); } @RequestMapping(value = "/insert",method = RequestMethod.POST) public void insert(Stu stu){ stuMongodb.insert(stu); } @RequestMapping(value = "/delete",method = RequestMethod.POST) public void insert(String str){ stuMongodb.delete(str); }}

完成一个小模块了!!!

转载地址:http://jcasn.baihongyu.com/

你可能感兴趣的文章
leetcode每日一题---680. 验证回文字符串 Ⅱ
查看>>
leetcode每日一题---15. 三数之和
查看>>
leetcode每日一题---面试题 16.18. 模式匹配
查看>>
地主的钱袋
查看>>
招新成绩统计
查看>>
webpack
查看>>
go部署
查看>>
配置swagger--go语言
查看>>
打印杨辉三角
查看>>
java中String类中常用方法
查看>>
flutter学习笔记:第一个APP应用
查看>>
哲学家进餐问题
查看>>
Python-Opencv学习总结(一):图像读取和获取图像特征
查看>>
实验十三:导出与导入
查看>>
第十五周.
查看>>
基于MVC模式的用户登录
查看>>
Java Swing搭建QQ登录界面
查看>>
Spring常用依赖及注解的使用
查看>>
解决Maven中资源过滤问题
查看>>
Springboot中解决Ajax请求跨域问题
查看>>