在使用MyBatis Generator自动创建代码时候常见的问题

    在使用MyBatis Generator自动创建代码时候会遇到一些问题,亲测。

最近闲来无事自己搭在了一个SSM框架,由于是在是太懒,所以不打算自己写mybatis相关的实体类和配置文件mapper.xml(其实是自己不会),于是自己在网上找了一个例子来尝试使用MyBatis Generator自动创建代码,我参考的文章是这篇,文章很详细,基本流程下来不会出什么问题基本。

下面附上文章地址https://blog.****.net/sunny243788557/article/details/45166397。

    只不过在使用的时候注意如果有并未写sql语句在下面这一块,需要将这些东西都注释掉,也就是table标签中的东西都注释掉,这里只是单纯的将表装换为实体类并未做其他的操作。

在使用MyBatis Generator自动创建代码时候常见的问题

然后自动转换之后你的目录结构可能是这样的,

在使用MyBatis Generator自动创建代码时候常见的问题

但是我们在测试的时候可能会出现下面的异常:

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userTMapper' defined in file [C:\Users\liulh\IdeaProjects\SSM\target\classes\com\cn\hnust\dao\UserTMapper.cl 
我们会看到mapper.xml文件是在src/main/java下而不是在resources下,这样可能会导致一些问题,需要修改我们的spring-mybatis.xml文件,将原本的classpath:/*/**/*.xml改为classpath*:/*/**/*.xml,为什么呢?因为带*会遍历所有的classpath,不带不会,一般mapper是在resource下,在这个下面可以不带,但是你是在代码中,所以要带。

在使用MyBatis Generator自动创建代码时候常见的问题

这样然后我们再进行测试,此时可能依然还是会出现问题。可能会是这样的异常:

Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.cn.hnust.dao.UserTMapper.BaseResultMap,我们会很疑惑BaseResultMap其实是有的,但是为什么还是会出现这个异常呢,其实还是mapper.xml文件位置影响的。为了解决这个问题我们可以在pom.xml文件的bulid标签下增加一些代码:

<resources>
  <resource>
    <directory>src/main/java</directory>
    <includes>
      <include>com/cn/hnust/mapping/*.xml</include>
    </includes>
  </resource>
</resources>

类似这样:

在使用MyBatis Generator自动创建代码时候常见的问题

然后问题就基本得到解决了。当然如果出现第一种原因的时候我们似乎可以不用修改spring-mybatis.xml文件,我们只要在pom.xml文件的build中加入上述的代码,两个问题都能得到解决了。