关于 spring 使用 mongodb 的 mongotemplate 对象操作数据库,对象注入问题(即该对象能否正常的调用相应的CRUD方法来处理数据)

通过 spring 框架,直接调用一些处理对象的方法和数据库交互, http 接口从 controller 层调用开始, 如果是:controller --> service --> dao --> entity 这个流程正常调用,则:

(1)controller1 --> service1 --> dao1 -->entity1

(2)controller1 --> service2 --> dao2 -->entity2 (类推 3、4、5……都可以正常执行)

但是如果:

(3)controller1 --> controller2 --> service1 --> dao1 -->entity1

(4)controller1 --> controller2 --> service2 --> dao2 -->entity2

会产生:这种由于逻辑需要,需要先在同一 controller 层,先调用其它 controller 类(直接 new 该类处理一下数据),再回来执行自己实体类操作(或者其他实体类操作)的时候,这种情况下,controller2 里面的 mongotemplate 对象,这个时候是一个 null 对象,是不能正常调用该对象对应的操作数据库的方法,来执行自己本身的逻辑的,也就是说,这个时候调用 controller2 类里面的方法,都是不能正常执行的!

解决方法:想要 controller2 在 controller1 里面调用能都正常执行,由于这时候,mongotemplate 在 controller2 中是 null 值,只要在 controller1 中把 mongotemplate 对象传入给 controller2 中即可!(可以通过在 controller2 中添加构造方法,在 controller1 中 new controller2(MongoTemplate mongotemplate) 时候把 mongotemplate 对象传入 controller2 ,即可解决该问题!)

【http 通过 controller 进来的 mongotemplate 对象才会注入 spring ,才能正常使用,如果是通过其他 controller 类来调用同层的 controller 里面的 mongotemplate ,则该对象是 null 值,不可使用 !而从 controller 调用 service 这种不同层的,则可以正常使用!】

原文地址:https://www.cnblogs.com/xuehuashanghe/p/10394029.html

时间: 2024-08-22 06:43:06

关于 spring 使用 mongodb 的 mongotemplate 对象操作数据库,对象注入问题(即该对象能否正常的调用相应的CRUD方法来处理数据)的相关文章

MongoDB 摆好正确操作数据库的姿势

上篇文章讲了如何安装MongoDB以及碰到的一些问题. 这次,讲一下MongoDB的一些常规操作. 设置可远程连接 服务开启后,查看设置的bind_ip是否可远程 总所周知,linux运维对端口信息的查看都是使用netstat netstat -nltp local:访问端口的方式,0.0.0.0是对外开放端口;127.0.0.1说明只对本机访问,外面访问不了 Address:端口 Foreign Address:对外开放,一般都是0.0.0.0:* Program name:此端口是使用的程序

使用command对象操作数据库

1.Command对象查询数据库 protected void Button1_Click(object sender, EventArgs e) { //读取web.config节点配置 string strcon = ConfigurationManager.ConnectionStrings["testjm"].ConnectionString; //实例化sqlConnection对象 SqlConnection con = new SqlConnection(strcon);

MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05

目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库.表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操作 模型 ***** 特色功能 从数据库建立模型 模型页面基本操作 用模型设计数据库并导出 结构.数据导入导出 导出 导入 附属小功能 刷新小按钮 查看操作对应sql语句 执行时间查看 手动筛选数据 练习 数据准备 使用SQL语句导入表结构与数据 如何验证答案是否正确 题目 部分参考答案(只放了两题的) 少

Spring Data MongoDB 二:添加、删除操作

一.简介 Spring  Data  MongoDB 项目提供与MongoDB文档数据库的集成,Spring与Hibernate集成时,Spring提供了org.springframework.orm.hibernate3.HibernateTemplate实现了对数据的CRUD操作, Spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,包括对集成的对象映射文件和PO

Beego操作数据库

Beego中内嵌了ORM框架, 1. ①可以将结构体和数据表对应起来,只需要通过结构体和对象就能操作数据库. ②根据结构体生成数据库中的表. func init() { //设置数据库基本信息 orm.RegisterDataBase("default", "mysql", "root:[email protected](127.0.0.1:3306)/test?charset=utf8") //映射model数据 orm.RegisterMod

在MVC3中使用code first生成数据局库并操作数据库

1.建立Users和UserInfos两个实体类 对应的是数据库中的表 public class User { //类名+Id(User+Id)组成的字符串在数据库表中会设置该字段是主键且是按1的增量增长 public int UserId { get; set; } public string UserName { get; set; } } UserInfos表 public class UserInfo { public int UserInfoId { get; set; } publi

[Spring Data MongoDB]学习笔记--MongoTemplate查询操作

查询操作主要用到两个类:Query, Criteria 所有的find方法都需要一个query的object. 1. 直接通过json来查找,不过这种方式在代码中是不推荐的. BasicQuery query = new BasicQuery("{ age : { $lt : 50 }, accounts.balance : { $gt : 1000.00 }}"); List<Person> result = mongoTemplate.find(query, Perso

[Spring Data MongoDB]学习笔记--MongoTemplate插入修改操作

插入操作: 直接给个例子 import static org.springframework.data.mongodb.core.query.Criteria.where; import static org.springframework.data.mongodb.core.query.Criteria.query; … Person p = new Person("Bob", 33); mongoTemplate.insert(p);//还可以多加一个参数,来提供collectio

Spring集成MongoDB及操作

1.Spring集成MongoDB的集成配置 若使用Maven项目,则添加包依赖. <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.2.0.RELEASE</version> </dependency> 在Spring配置文件中对Mon