全局配置文件之mappers [SQL映射注册]

全局配置文件之mappers(SQL映射注册)

mapper : 注册一个sql映射

  • mapper是mappers的子标签

注册sql映射分为以下几种情况:

情况一: 使用resource属性

引用类路径之下的sql映射文件

情况二: 使用url属性

引用网络路径或者是磁盘路径下的sql映射文件

注意: 情况一和情况二都是注册映射文件, 后面我们会将注册接口(但是接口中也要是要么使用默认的启动映射的关系, 要么就是要配置手动映射关系)

情况三: 使用class属性

引用(注册)接口

  • 用class属性引用接口的时候要满足一下两个条件:
    1. 有sql映射文件的话, 那么映射文件名必须和接口同名, 并且放在与接口同一目录之下
      • 注意: 因为我们最终部署到服务器之上的项目在编译之后对于IDEA中resources文件夹下的配置文件包括java包下的可执行文件, 最终都会被放在classes文件夹下(classes文件夹又在target文件夹之下) , 也就是resources和java包都是对应着编译之后的classes文件夹, 所以我们说要将接口和对应映射文件放在同一目录之下, 但是如果我们真的将我们的Mapper.java接口和我们的Mapper.xml映射文件都放置到java包下的某个包中的话那么我们如果我们的接口和映射文件多了的时候我们的放到正真的同一个包下就显得很混乱, 因为我们的java文件夹和我们的resources文件夹其实编译后都对应的是classes文件夹, 所以其实我们就可以将我们的Mapper接口和我们的Mapper.xml文件分别放到java和resources目录之下的相同分级目录中, 编译之后他们就会自动的到一个文件夹中, 就满足了我们的第一个要求
        • 在Esclipse中src文件夹之下写java文件, 而在conf文件夹之下写配置文件, 而在编译之后src文件夹下的java文件和conf文件夹之下的配置文件都会加载到lib目录下, 而对于IDEA而言是java文件夹和resources文件夹之下的都在编译之后会跑到lib文件夹下
    2. 如果没有sql映射文件, 那么所有的sql和映射关系都是要利用注解的方式来写到接口中的对应方法上的
      • 即使是使用注解的方式配置SQL语句, 我们也是一定要配置映射关系的, 但是注意: 一般情况之下我们使用注解代替映射文件的时候注解中配置的sql语句都是比较简单的, 我们一般都是针对一整表的操作, 所以一般情况之下我们仅仅只是需要自动映射就完全就足够了, 不会需要使用@Results和@Result的注解来配置映射关系, 但是记住, 即使是使用接口的方式代替映射文件, 但是这个时候映射关系也是要进行配置的, 只不过我们大多数情况之下都是使用的自动映射而已, 我们只是使用了自动映射, 而不需要手动配置映射关系而已
一般情况之下使用情况一和情况三的时候比较多:
<mappers>
    <mapper resource = "mybatis/mapper/EmployeeMapper.xml"></mapper>
    <mapper class = "com.ffyc.mybatis.dao.EmployeeMapperAnnotation"></mapper>
</mappers>
public interface EmployeeMapperAnnotation{
    @Select("select * from tbl_employee where id = #{id}")
    public Employee getEmpById(Integer id);
}
总结:

比较重要的, 复杂的Dao接口我们要写Sql映射文件, 不重要的, 简单的Dao接口为了开发快速可以使用注解

  • 因为使用注解写sql语句时又是相当于将sql语句和代码耦合到一起了, 不方便维护, 所以我们如果写重要的, 复杂的sql的时候最好还是将sql语句抽取到sql映射文件中来写

补充:

这里我们补充一种批量注册接口的方式, 使用mappers的子标签package在package子标签的name中写上对应要注册的多个接口所在的包名, 则会将这个包中的所有的接口都注册进来

  • 但是注意: 我们只要是注册接口的时候: 不管是使用mapper注册单个接口还是使用package注册一个包中的多个接口, 原理其实都是一样的, 一定要保证引用接口时满足两个条件之一 : 1.如果对应接口有映射文件, 则映射文件必须要和接口同名, 并且放在与接口同一目录之下. 2.如果没有sql映射文件, 所有sql都要是利用注解方式写在接口中的方法上的

引用网络路径或者磁盘路径下的sql映射文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值