【问题标题】:MyBatis: Autoscan for type aliasesMyBatis:自动扫描类型别名
【发布时间】:2018-12-09 06:34:36
【问题描述】:

我有一个带有此条目的 MyBatis mapper.xml 文件:

<select id="findAll"
            resultType="User">
...
</select>

...“用户”类在这个包中:

com.company.model.User

...在 application.properties 我有这个条目:

mybatis.type-aliases-package = com.company.model

一切正常。

在重构并将某些类移动到子包中后,MyBatis 在自动扫描期间无法再找到它们。

包结构现在是这样的:

com.company.entity.users.User
com.company.entity.departments.Department
com.company.entity.students.Student

我已经尝试过(在许多其他变体中:使用 '/' 而不是 '.',没有 'classpath:' 等):

mybatis.type-aliases-package = classpath:com.company.entity.*

但无法让它工作。

如何让 MyBatis 扫描“com.company.entity”包的所有子包?

【问题讨论】:

    标签: spring-boot mybatis spring-mybatis


    【解决方案1】:

    根据Mybatis configuration,您可以使用分隔符来分隔您需要的包。 这些是分隔符:

    ",; \t\n"

    那么你可以通过以下方式设置:

    mybatis.type-aliases-package = com.company.entity.users,com.company.entity.departments,com.company.entity.students
    

    【讨论】:

      【解决方案2】:

      试试

      mybatis.type-aliases-package = com.company.entity.**
      

      它将包括包“实体”下的所有类,以及此类型别名下的所有类。

      【讨论】:

      • 一个好的答案将始终包括解释为什么这会解决问题,以便 OP 和任何未来的读者可以从中学习。
      • srry... 但我找不到解释为什么这样做的文档。起初我尝试了第一个答案,但是(可能是因为我对 yml 的理解很差?)它没有用。在网上想知道我发现有人使用像'com.test.demo.dto.**.something'这样的路径,并尝试了这个,它奏效了。我希望有人能弥补。
      • 但无论如何我编辑了一下
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2017-12-07
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多