MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    不同插件使用相同框架(mybatis)遇到找不到mapper的问题

    开发交流
    2
    9
    393
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • T
      Toukou-Yuu 最后由 编辑

      我有两个插件,里面均用到了mybatis框架,它们单独放进plugins里的时候是可以正常使用的。但是两个插件同时使用的时候就会报:

      org.apache.ibatis.binding.BindingException: Type interface xxx is not known to the MapperRegistry.
      

      已经检查:namespace类名正确,文件名与java名一致,mybatis配置文件也已经注册mapper
      请问应该怎么解决呢?

      1 条回复 最后回复 回复 引用 0
      • cssxsh
        cssxsh 最后由 编辑

        检查 Mapper 的定义是否有重复

        T 1 条回复 最后回复 回复 引用 0
        • T
          Toukou-Yuu @cssxsh 最后由 编辑

          @cssxsh 检查过了,没有重复

          cssxsh 1 条回复 最后回复 回复 引用 0
          • cssxsh
            cssxsh @Toukou-Yuu 最后由 编辑

            @toukou-yuu
            配置方式?
            有可能配置相互覆盖了

            T 1 条回复 最后回复 回复 引用 0
            • T
              Toukou-Yuu @cssxsh 最后由 编辑

              @cssxsh
              两个xml文件除了数据库和mapper不同,其他都类似,请问您说的覆盖是指?
              如果会覆盖的话,要怎么解决呀?

              <configuration>
                  <environments default="mysql">
                      <!--mysql的环境-->
                      <environment id="mysql">
                          <!--事务的类型-->
                          <transactionManager type="JDBC"/>
                          <!--数据源-->
                          <dataSource type="POOLED">
                              <!--数据库信息-->
                              <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                              <property name="url" value="jdbc:mysql://server:port/**dbA**?rewriteBatchedStatements=TRUE"/>
                              <property name="username" value="xxx"/>
                              <property name="password" value="xxx"/>
                          </dataSource>
                      </environment>
                  </environments>
              
                  <mappers>
                      <mapper resource="A.xml"/>
                      <mapper resource="B.xml"/>
                      <mapper resource="C.xml"/>
                  </mappers>
              
              </configuration>
              
              cssxsh 1 条回复 最后回复 回复 引用 0
              • cssxsh
                cssxsh @Toukou-Yuu 最后由 编辑

                @toukou-yuu
                主配置文件名 一样吗

                T 1 条回复 最后回复 回复 引用 0
                • T
                  Toukou-Yuu @cssxsh 最后由 编辑

                  @cssxsh 文件名一样的,现在改掉之后又报了找不到配置文件的错误。。(文件名引用的地方也改了)

                  java.io.IOException: Could not find resource xxx.xml
                  

                  原来两个配置文件都是mybatis-config.xml,读取文件用的Resources.getResourceAsStream("")方法。
                  用原来的名字是能找到配置文件的,改了就找不到了(比如eng-mybatis-config.xml),就觉得很奇怪。。

                  T 1 条回复 最后回复 回复 引用 0
                  • T
                    Toukou-Yuu @Toukou-Yuu 最后由 编辑

                    @toukou-yuu
                    感觉大概率确实是配置文件重名的问题,但是现在又卡在io问题上了,问了一圈也找不到办法。
                    不管怎么说,还是帮大忙了,非常感谢

                    cssxsh 1 条回复 最后回复 回复 引用 0
                    • cssxsh
                      cssxsh @Toukou-Yuu 最后由 编辑

                      @toukou-yuu
                      Resources.getResourceAsStream("")
                      和类加载器有关
                      插件语境下需要切换类加载器

                      1 条回复 最后回复 回复 引用 0
                      • 1 / 1
                      • First post
                        Last post
                      Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact