MyBatis-(笔记)基础-02

SQL映射
MyBatis的强大就在于SQL映射语句,SQL映射文件的配置简单,减少50%以上代码量。
    SQL映射文件的几个顶级元素配置
mapper:映射文件的根元素节点,只有一个属性namespace(命名空间)作用如下:
   1.用于区分不同的mapper,全局唯一
   2.绑定DAO接口,即面向接口编程。当namespace绑定某—接口之后可以不用写
   该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的
   mapper配置来执行SQL语句。因此namespace的命名必须要跟接口同名。
cache:配置给定命名空间的缓存。
cache-ref:从其他命名空间引用缓存配置。
resultMap:用来描述数据库结果集和对象的对应关系。
sql:可以重用的SQL块,也可以被其他语句引用。
insert:映射插入语句。
update:映射更新语句。
delete:映射删除语句。
select:映射查询语句。
    使用select完成但条件查询

id:命名空间中唯一的标识符,可以被用来引用这条语句。
parameterType:表示查询语句传入参数的类型的完全限定名或别名,
     支持基础数据类型和复杂数据类型。
resuItType:查询语句返回结果类型的完全限定名或别名,
别名的使用方式与parameterType是一样的。
        
    使用select完成多条件查询

把条件参数封装成User对象进行入参
parameterType支持的复杂数据类型除了JavaBean还包括Map类型

    使用resultMap完成查询结果的展现
resultMap元素用来描述如何将结果集映射到Java对象。
resultMap元素的属性值和子节点:
   id属性:唯一标识,此id值用于select元素resultMap属性的引用。
   type属性:表示该resultMap的映射结果类型。
   result子节点:用于标识一些简单属性,其中column属性表示从数据库中查询的字段名.
   property则表示查询出来的字段对应的值赋给实体对象的哪个属性。
1.resuItType
resuItType直接表示返回类型,包括基础数据类型和复杂数据类型。
2.resultMap
resultMap则是对外部resultMap的引用,对应外部resultMap的id,
表示返回结果映射到哪一个resultMap上。
3.resuItType和resultMap的关联
当select元素提供的返回类型属性是resuItType的时候,MyBatis会将
Map里面的键值对取出赋给resuItType所指定的对象对应的属性。
其实MyBatis的每个查询映射的返回类型都是resultMap,只是当我们提供的
返回类型属性是resuItType的射候,MyBatis会自动把对应的值赋给resuItType
所指定对象的属性.而当我们提供的返回类型是resultMap的时候,
因为不能很好地表示领域模型.
我们就需要通过进一步的定义把它转换为对应的实体对象。
当返回类型是resultMap时,这主要用在进行复杂联合查询上,
简单查询使用resuItType就可以了。
4.resultMap的自动映射级别

默认的映射级别为PARTIAL。


    insert

    update

    delete

insert,update,delete元素中均没有resultType,
DAO层接口返回值为int。
    
    @Param注释
@Param用来传入多个参数,但是一般不超过三个,超过就使用Map


association
用于映射‘复杂类型’属性,但是仅处理一对一的关联关系。
<resultMap type="SMBMS_BILL" id="maps">
<result column="isPayment" property="isPayment"/>
<association property="provider2" javaType="SMBMS_PROVIDER">
<id column="rid" property="id" />
<result column="proCode" property="proCode"/>
</association>
</resultMap>
javaType:完整Java类名或者别名
property:映射数据库列的实体对象的属性
column:完整Java类名或者别名
    collection
作用与association类似,也是映射到JavaBean的某个‘复杂类型’属性,
处理的是一对多
<resultMap type="SMBMS_USER" id="mapadd">
<id column="id" property="id" />
<result column="userName" property="userName" />
<collection property="listAddresses" ofType="SMBMS_ADDRESS">
<id column="aid" property="id" />
<result column="addressDesc" property="addressDesc" />
</collection>
</resultMap>
ofType:完整Java类名或别名,即集合所包含的类型。
property:映射数据库列的实体对象的属性。

猜你喜欢

转载自blog.csdn.net/qq_41909010/article/details/80732083
今日推荐