SQL 映射文件

目录

一、什么是SQL映射文件?

二、SQL映射文件中的几个顶级元素

三、命名规则

四、mapper

MyBatis框架的条件查询

      1.  实现单一条件查询

       2. 实现多条件查询

MyBatis框架的结果映射

MyBatis框架的缓存

     MyBatid框架缓存分为两个级别:

总结

一、什么是SQL映射文件?

          SQL映射xml文件是所有sql语句放置的地方,不同于JDBC连接的方法,需要构造方             法、写statement和resultset语句才可以调用指定的sql语句,SQL映射文件只需要把所有的             sql语句写在配置文件中,根据不同的id,可以在类中直接调用这些语句。 文件需要定义                 一个workspace,一般定义为对应的接口类的路径。 Note:写好的SQL映射文件,需要在              Mybatis主配置文件标签mapper中引用。

二、SQL映射文件中的几个顶级元素

  • mapper:SQL映射文件的根元素。只有一个namespace,用于区分不同的mapper,必须全局唯一。
  • cache:为给定命名空间配置缓存。
  • cache-ref:引用其他命名空间中的缓存配置。
  • resuitMap:用来描述查询结果集中的字段和Java实体类属性的对应关系。
  • sql:定义可重用的SQL语句块,可以在其他语句映射中引用,提高代码编写和维护SQL语句的效率。
  • insert:   映射insert语句。
  • select:  映射select语句。
  • update:映射update语句。
  • delete :映射delete语句。

三、命名规则

      1. SQL映射文件与Mapper接口同名(实体类名+Mapper),并放置在同一个包路径下。文件类型不一样
      2. mapper的namespace一般是要映射的Mapper接口的完全限定名。
      3. 接口中的方法名与映射文件中SQL语句的ID一一对应。MyBatis通过namespace+ID确定和接口方法绑定的SQL语句ID。这也就是为什么可以不通过Mapper接口直接用selectOne 和selectList来读取值。
      4. 不同的SQL映射文件中,子元素ID可以相同。(因为命名空间唯一,使用时是命名空间加上ID也就唯一了)。

四、mapper

         接口namespace属性

              区别不同的mapper,namespace和子元素的id联合保证唯一

         绑定DAO接口(关键)
               namespace的命名必须跟某个接口同名
               接口中的方法与映射文件中SQL语句id一一对应

示例:

userDao接口中有个selectAll方法,那么在同级目录下要创建一个userDao.xml配置文件,其中该文件的mapper的namespace为userDao的完整路径(包名+文件名)
同时在该xml文件中有一个< selelct id=“selectAll”>< /select>元素标签

MyBatis框架的条件查询

      1.  实现单一条件查询

           如果仅传入一个简单数据类型的查询条件,如一个基本数据类型或其包装类型,或一个String类型等,MyBatis框架的处理方式也非常简单。以实现根据用户的真实姓名模糊匹配来查询用户信息为例,关键代码如示例1所示。

     

       2. 实现多条件查询

           在实际应用中,数据查询经常会综合多种条件,如724系统用户管理模块中的查询用户功能,查询条件包括用户名(模糊匹配)和用户角色,如图2.2所示。对于多条件查询,MyBatis框架提供了多种方法实现条件赋值。

        1.  将查询条件封装成Java对象作为入参

        2.   将查询条件封装成Map对象作为入参

        3    使用@Param注解实现多参数入参

MyBatis框架的结果映射

          MyBatis框架会获取结果集中的列名称并 查找具有相同名称的属性进行赋值。但实际开发中的情况会更加复杂,如数据库与应用程序的命名规则不统一、列名和属性名不同,或使用连接查询时需要封装来自多张表的数据,这时域对象要如何设计?针对这些问题可以有不同的解决方案,如在SQL语句中使用select子句别名、修改域模型设计以包含关联字段等。但是,这些方法都有明显的弊端,使用select子句别名会大大增加SQL语句的开发工作量,烦琐且易错,改变域模型设计规则会破坏面向对象的设计原则,导致混乱。为此,MyBatis框架提供了Result Map机制来自定义结果映射,简单灵活而又功能强大。

MyBatis框架的缓存

     MyBatid框架缓存分为两个级别:

一级缓存:
        MyBatis框架的一级缓存是基于P erpetualCache和HashMap本地缓存,默认是SqlSession级别的缓存,在SqlSession的一个生命周期内有效。当SqlSession关闭后,该SqlSession中的所有一级缓存会被清空。MyBatis框架的一级缓存默认是开启的。

二级缓存:
       二级缓存是SqlSessionFactory级别的,其作用域超出了一个SqlSession的范围,缓存中的数据可以被所有SqlSession共享。MyBatis框架的二级缓存默认是关闭的,使用时需要在Mybatis框架的核心配置文件中设置开启。

   

二级缓存使用方法

      1.在MyBatis核心配置文件中设置全局开启二级缓存

      2.即使开启了二级缓存,默认情况下也是不使用的,可以根据需要在SQL映射文件中配置缓存,为当前namespace启用二级缓存,

总结

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值