SQL映射文件详解

1.SQL映射文件

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

1.SQL映射文件中顶级元素如下:

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

2.实现单一条件查询

1.在SysUserMapper接口添加查询方法:

2.在SysUserMapper.xml添加SQL语句映射:

3.在测试类中添加测试方法:

3.实现多条件查询

1.多条件查询,MyBatis框架提供多种方法实现,如下所知的三种:

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

在SysUserMapper接口中添加查询方法,使用SysUser类作为参数,使用realName和roleId封俩个查询条件

关键代码:

在SysUserMapper.xml添加SQL映射

关键代码:

测试SysUser类型提供条件查询

关键代码:

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

在SysUserMapper接口中添加查询方法,使用Map对象作为参数

关键代码:

使用Map对象作为参数,绑定key为rName和rId的键值对(key-value)获取查询条件

关键代码:

测试Map类型提供的查询条件,俩个条件的key分别使用rName和rId

关键代码:

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

在SysUserMapper接口中添加查询方法,直接传入多个参数,并使用@Param注解为参数

关键代码:

添加SQL映射,使用@Param注解指定的名称绑定查询条件

关键代码:

测试直接传入多个查询条件

关键代码:

2.MyBatis框架的结果映射

1.使用resultMap元素自定义结果映射

在SysUserMapper接口添加查询用户的方法

使用resultMap元素映射和使用resultMap元素定义的规则封装查询结果

resultMap元素以下属性:

1.id:映射规则集的唯一标识,可以被 select元素的resultMap 属性引用。

2.type:映射的结果类型,这里指定封装成 SysUser 实例。

resultMap 元素包含以下子元素。

1.id:指定和数据表主键字段对应的标识属性。设置此项可以提升 MyBatis 框架的性能,特别是应用缓存和嵌套结果映射的时候,

2.result:指定结果集字段和实体类属性的映射关系。

2.嵌套结果映射

在resultMap中使用association元素实现嵌套映射

2.1.在SysUserMapper接口添加根据角色ID查询用户的方法

2.2.使用resultMap元素定义结果映射:

2.3.association元素的主要属性

1.property:实体类中用来映射查询结果子集的属性。

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

association 元素包含如下子元素

1.id

2.result

1.collection元素

在SysUserMapper接口添加地址列表属性

在SysUserMapper接口中添加根据用户ID获取用户信息以及地址列表的方法

collection 元素有如下常用属性

1.property:实体类中用来映射查询结果子集的集合属性。

2.ofType:property 指定的集合属性中的元素的数据类型,可以使用ava完全限定类名或别名。

3.MyBatis框架的增、删、改操作

在SysUserMapper.xml添加SQL语句映射的增、删、改操作

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值