Mybatis入门:学习记录(2)

SQL映射文件:

mybatis的真正强大之处就在于它的SQL映射语句。

SQL映射文件几个顶级配置元素:

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

namespace必须和接口类同名。

Mybatis入门:学习记录(2)_第1张图片

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

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

resultMap:用来描述数据库结果集和对象的对应关系。

sql:可以重用的sql块,也可以被其他语句引用。

insert,update,select,delete:映射语句。

他们语句基本类似


id:命名空间唯一的标识符。指定对应的类接口中的方法。

parameterType:指定传入参数的类型的完全限名或别名。多个查询条件时,可以将条件封装成对象入参,也可以创建一个map集合(key,value)对应入参参数。

resultType:返回结果类型。

当有表连接关系查询时一般有两种方法:在原有实体类上加入想展示的数据库字段的属性,进行连表查询,使用resultType做自动映射。

可以使用resultMap做自定义的结果映射,字段名可以不一致,并且可以指定要显示的列。比较灵活。(为了方便可以一致)

Mybatis入门:学习记录(2)_第2张图片

resultType和resultMap两者只能用一个,不可同时使用。

resultMap对应的resultMap元素的id;

resultMap元素:

type:表示resultMap映射结果的类型。

result子节点:column属性对应数据库查询出的字段名,property对应查询出的字段赋值给类哪个属性。

resultType:直接表示返回类型,包括基础类型和复杂数据类型。

resultMap:是对外部resultMap的引用。

入参方式:在接口有@Param注解可以自定义入参参数名。在映射sql中使用#{参数名}

上图中association配置项:映射到javaBean的某个‘复杂属性’,比如javaBean类使用。

首先要在元实现类创建一个要映射的类为类型的属性。注意:association只处理一对一的关联关系。

property:对应你创建的那个类为类型属性。javaType:对应这个类型的类。

result子元素和resultMap的就是一个意思了。

还有

Mybatis入门:学习记录(2)_第3张图片

connection配置项和assocation元素作用差不多一样。非常类似。只不过这个对应的属性的类型是集合列表。

ofType:指定这个集合的类型。

有关resultMap还有他的三个映射级别:

NONE:禁止自动匹配。

Partial:自动匹配所有属性,内部嵌套除外(association,collection)。

full:自动匹配所有。

mybatis也提供了一级缓存和二级缓存。ps:最好别用,这个缓存的性能太低太低。

一级缓存:基于PerpetualCache(mybatis自带)的hashMap本地缓存,作用范围session,当session flush或close之后,该session中所有缓存清空。

二级缓存:就是global caching,它超出了session。可以被所有session共享。开启它只要在mybatis的核心配置文件

****-config.xnl中settings元素中开启。


总结:

sql映射文件入参方式根据场合来看。比较考验sql语句编写能力。数据库操作与代码分离,便于维护。

你可能感兴趣的:(Mybatis入门:学习记录(2))