• TempleteJDBC和Mybatis混合使用注意事项


    今天,师傅让我将以前项目中的一个功能接口拿到现在正在做的项目中,之前的项目用的是 Spring+SpringMVC+TempleteJDBC,现在做的项目用的是 Spring Boot+Mybatis,如果将这个功能代码从TempleteJDBC 改为Mybatis 会比较麻烦,然后就决定不改,就混合使用,果然出现了问题。

    首先出现了 dataDAO 为 null 的问题,注解什么的都没有少,也注入了,就是一直为 null 找了好长时间的原因,是因为调用这个dataDAO 的 dataService 都有问题 ,这个 dataService 就没有注入成功,造成 dataDAO 为 null ,而且要是想将对象交给Spring工厂管理,你不能直接将这个对象 new 出来,否则运行时候可能会报空指针异常

    这个dataService 为什么没有注入成功呢?就是因为我是将它 new 出来的,尽管上面有 @autowired 注解,没有用,然后我去掉了后面的 new ,发现还是不对,仔细一看,上面有个 static ,搜索了一下发现Static 静态变量 不能直接使用 @autowired 注解,然后我把 static 去掉之后才变正常。

    此时,我满怀信心觉得应该没问题了,没想到还是不行,这次出现的问题是找不到 dataDAO 中的方法,然后我觉得这个地方可能就是和 Mybatis 冲突的地方了,因为 Mybatis 中 DAO层的实现类是用 xml 文件实现的,而 TempleteJDBC 中是用 DAOImpl 类实现的,配置文件.yml 中指定了 xml 文件的路径,造成 TempleteJDBC 中的 dataDAO 找不到它自己的实现类 dataDAOImpl 。

    最后的解决方式是不要这个 dataDAO 了 直接在 service 中注入JdbcTemplate ,将之前在dataDAO 中的操作直接在 service 中实现,至此问题算是解决完毕,接下来就要将 Oracle 中的存储过程转成 MySQL中的 SQL 语句了。

  • 相关阅读:
    多厂商的实现不同vlan间通信
    CCF CSP题解:坐标变换(其一)(202309-1)
    如何在虚拟机上安装linux操纵系统
    mysql 常见操作指令
    Java基于SpringBoot的高校招生系统
    PHP代码审计17—CLTPHP代码审计
    RAR压缩解压命令
    【JavaScript】时间日期:Date对象
    代码随想录算法训练营第二十二天丨 二叉树part09
    mybatis-plus单表操作(增删改查)
  • 原文地址:https://blog.csdn.net/iijik55/article/details/126516697