SQL映射文件

SQL映射是MyBatis框架最具特色的部分,功能强大且使用简单。在第1章中提到,MyBatis框架的主要思想是将SQL语句从程序代码中分离出来,对JDBC访问数据库的代码进行封装,从程序中消除了所有SQL参数设置及处理结果集的JDBC代码,从而大幅减小数据访问层的编码量。并且,SQL语句与带啊解耦,可以最大限度地实现对SQL语句的灵活管理方便SQL调优以保证性能。

1.SQL映射文件中的几个顶级元素介绍:
 

mapper:SQL映射文件的根元素。只有一个属性namespa,用于区分不同的mapper,必须全局唯一。

cache:为给定命名空间配置缓存。

cache-ref:引用其他命名空间中的缓存配置。

resultMap:用来描述查询结果集中的字段和Java实体类属性的对应关系。

sql:定义可重用的SQL语句块,可以在其他语句映射中引用,提高编写和维护SQL语句的效率。

insert:映射insert语句。

update:映射update语句。

delete:映射delete语句。

select:映射select语句。
2.使用@Param 注解实现多参数入参
 

除以Java对象或Map的形式封装查询条件为查询方法传参外,MyBatis框架还允许直接对查询方法传入多个参数,如把查询方法的参数列表直接定义为(StringrealName,int roleld)。对于这种形式的参数列表,在yBats框架为Mapper接口方法提供的实现中,默认会把传入的参数转换成Map格式,且默认使用“param+参数在列表中的位置”作为key,如“param1”“param2”在映射的SQL语句中使用默认命名表意不直观,且调整顺序容易出错,所以推荐使用@Param 注解为参数命名。例如,@Param(“realName”)String realName,相当于将该参数的key命名为 realName,便于在映射的 SQL 中使用。

3.MyBatis 框架的结果映射

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

4.association 元素

assocation元素用来处理“has-one”类型的关系,如用户类内部“有一个”用户角色类型的属性入库记录类中"有1个”供货商类型的属性。

5.association 元素的主要属性如下:

property:实体类中用来映射查询结果子集的属性。
javaType:property 指定的属性的数据类型,可以使用 Java 完全限定类名或别名。如果property 指定的属性是一个 JavaBean,则 MyBatis 框架通常能够自行检测出其类型则应该通过 javaType 属性明确指定其数据类如果 property 指定的是一个 HashMap型,以确保所需行为。

association 元素包含如下子元素:
id、result
它们在 association中的含义和用法与在resultMap 元素中相同,这里不再赘述修改测试类 SysUserMapperTest 添加测试方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值