如何在实体类内调用mapper

djmtx 2019-12-05 11:41:40
我想使一个实体类在被实例化时从数据库读取数据附值给其中一个变量,用@resources 注入mapper,发现为空,对ssm理解不深,请大家指教下,谢谢。
...全文
1437 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
努力长肉呀 2019-12-12
  • 打赏
  • 举报
回复
通过反射去调
licip 2019-12-11
  • 打赏
  • 举报
回复
这种需求有问题,一个数据表,那么多数据,你实例化,只是实例化一条。这肯定不对的。如果只有一条数据,那设置一个缓存不就解决了。
多春鱼 2019-12-11
  • 打赏
  • 举报
回复
说了就是想在不被spring管理的类里调用spring里的东西 这种情况也是挺常见的 你项目里应该有一个记录上下文的工具类 没有的话去百度一下 一搜一大把 然后拿到上下文之后就可以通过getBean方法拿到你需要的mapper了 就不需要注入了
jiawenhe123 2019-12-10
  • 打赏
  • 举报
回复
你这个需求可以使用两种方法来做: 第一:你使用的mapper,获取host如果是一个定值,那么可以作为一个初始化的public static final String保存,然后通过@Value或者注解来填充,这样性能较好,不需要每次都查询数据库,并且可读性好,更易管理。 如果这是一个动态值,那么建议在你的Mail(Bean)上添加注解@Component和注解@Scope(ConfigurabelBeanFactory.SCOPE_PROTOTYPE)(由于你的bean是有状态的所以一定要加上多例注解)。
菜鸟①个 2019-12-05
  • 打赏
  • 举报
回复
你的实体类又没有交给spring管理,,
javabro 2019-12-05
  • 打赏
  • 举报
回复
首先如果要满足你的Mail类 BaseDateMapper属性的注入 需要给你的Mail类 加 @Component注解(并且注意你的包路径扫描要确定Mail能被扫描到),其次你的实体Mail应该是个POJO类,应通过业务层去实例化赋值等。(还是你这里只是像单独测试下)
djmtx 2019-12-05
  • 打赏
  • 举报
回复
引用 7 楼 土豆是我的最爱 的回复:
除非你每次都去new新的Mail,你想数据库改变而不去重启项目,那就要每次都查询啊,不查你怎么知道数据库是否修改了
所以我没有把实体类交给spring 啊,实际上我的每次调用都是new一个mail,我就是想偷个懒,直接new,让实体类的构造方法自己去数据库里查,这样就不用重启了。跳出框架其实都好实现,但是上了框架这洁癖就出来了,不想插入一些框架体系之外的东西
  • 打赏
  • 举报
回复
除非你每次都去new新的Mail,你想数据库改变而不去重启项目,那就要每次都查询啊,不查你怎么知道数据库是否修改了
  • 打赏
  • 举报
回复
你这样也是一样的啊,你就算把这个类托管了,spring默认是单例的,你也只是第一次启动能够赋值啊,数据库修改了项目不重启,这个类的这个值也不会变的
maradona1984 2019-12-05
  • 打赏
  • 举报
回复
需求是合理的,但你这种写法是错误的. 俺觉得你还是挺有灵性,给你个链接自己想解决方案吧. https://www.cnblogs.com/loong-hon/p/10917755.html
djmtx 2019-12-05
  • 打赏
  • 举报
回复
引用 2 楼 土豆是我的最爱 的回复:
楼上说的对,你的bean,spring并没有管理,怎么能在这个类中注入BaseDataMapper,而且也不应该有这种需求啊,在service中写它不香吗
在实体类里一劳永逸啊,在service 的话每次调用都得赋值,我是想把这个host的值放到数据库里,这样修改值不用重启。
  • 打赏
  • 举报
回复
楼上说的对,你的bean,spring并没有管理,怎么能在这个类中注入BaseDataMapper,而且也不应该有这种需求啊,在service中写它不香吗

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧