Mapper动态代理开发遵从的规范:

  1. sql映射文件的namespace必须和mapper接口的全限定类名保持一致。
  2. sql映射文件xml中的id必须和mapper接口的接口方法名保持一致。
  3. sql映射文件xml中sql语句的输入参数类型必须和mapper接口的接口方法参数类型保持一致。
  4. sql映射文件xml中sql语句的返回结果类型必须和mapper接口的接口方法返回类型保持一致。

       Mybatis是基于sql映射配置的框架,sql语句都写在Mapper配置文件中,当构建SqlSession类之后,就需要去读取Mapper配置文件中的sql配置。而mappers标签就是用来配置需要加载的sql映射配置文件路径中。

       mappers标签下有许多mapper标签,每一个mapper标签中配置的都是一个独立的映射配置文件的路径。

配置方式如下:

第一种:使用相对路径进行配置。

<mappers>
    <mapper resource="org/mybatis/mappers/UserMapper.xml"/>
    <mapper resource="org/mybatis/mappers/ProductMapper.xml"/>
    <mapper resource="org/mybatis/mappers/ManagerMapper.xml"/>
</mappers>

第二种:使用绝对路径进行配置。

<mappers>
    <mapper url="file:///var/mappers/UserMapper.xml"/>
    <mapper url="file:///var/mappers/ProductMapper.xml"/>
    <mapper url="file:///var/mappers/ManagerMapper.xml"/>
</mappers>

第三种:使用接口信息进行配置。

<mappers>
    <mapper class="org.mybatis.mappers.UserMapper"/>
    <mapper class="org.mybatis.mappers.ProductMapper"/>
    <mapper class="org.mybatis.mappers.ManagerMapper"/>
</mappers>

第四种:使用接口所在包进行配置。

<mappers>
    <package name="org.mybatis.mappers"/>
</mappers>

只有配置了mappers信息后,Mybatis才知道去哪里加载Mapper映射文件。

使用resource方式的映射文件可以任意取名而且放置的位置也可以不放在同一个包下。但是package和class方式必须满足以下两点。

  1. 接口与映射文件一定要同名。如:XXXMapper.java与XXXMapper.xml。
  2. 接口与映射文件一定要放在同一个包下。

放在同一包下的两种方式:

在src\main\java下的子目录下

 或者

接口文件放在src\main\java的子目录中,而映射文件放在src\main\resources的子目录下。而两个的子目录是相同的。另外,在resources下建层级目录必须采用\隔开。

 

 

 如果mapper.xml文件没有放置到src\main\resources下面,是不会被maven build plugin默认扫描到的。此时需要修改启动的模块的pom文件,在build标签里面加入:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

 

 posted on 2020-10-19 20:40  会飞的金鱼  阅读(196)  评论(0)    收藏  举报