Mybatis
配置文件常用属性设置
- properties标签
(1)新建properties文件
(2)导入properties文件:
<properties resource="jdbc.properties"/>
-
typeAliases标签
标签格式:<typeAliases type="需要设置别名的类" alias="别名"></typeAliases>
-
settings标签
全局配置标签,写法如下,下列写法为将数据库返回值映射为驼峰式命名 <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
resultMap标签的使用
-
id标签
进行数据库唯一主键映射所使用的标签 <id column="数据库中的主键属性名" property="实体类对应的属性名"></id>
-
result标签
对与数据库常规属性映射到实体类对应属性的标签 <result column="数据库中的属性名" property="实体类对应的属性名"><result>
-
处理一对多映射(实体类中有其他实体类的映射)
方法1: <resultMap id="resultMapId" type="映射到的实体类型"> <association property="映射到的实体类中的属性" javatype="映射到的属性的实体类类型"> 使用id和result标签 </association> </resultMap> 方法2:(级联) <result column="数据库中的属性名" property="实体类对应的属性名.对应的属性"><result> 方法3:(分布查询) <resultMap> <assocaiation property="主实体类对应的实体类属性名" select="第二步查询依赖的接口全类名.方法名" column="第一步查询返回的作为条件的属性"> </assocaiation> </resultMap>
-
延迟加载
延迟加载在分步查询的基础上进行,需要在全局配置中配置相关 <setting name="lazyLoadingEnabled" value="true"/>//全局延迟加载,开启后所有关联查询均失效 <setting name="aggressiveLazyLoading" value="true"/>//选择性延迟加载,可自定义是否延迟加载: <resultMap> <assocaiation property="主实体类对应的实体类属性名" facthtype="eager" select="第二步查询依赖的接口全类名.方法名" column="第一步查询返回的作为条件的属性"> </assocaiation> </resultMap> <-- facthtype来决定是否延迟加载"eager"立即加载,"lazy"延迟加载 -->
-
一对多关系映射
<colletion proprety="主实体类中的集合属性名" oftype="集合的泛型"> 标签中使用常规Id标签和result标签来进行映射 </colletion>
-
动态sql
(1).if标签
<if test="判断语句"> 满足条件后的操作 </if>
(2).where标签
where标签可将if判断满足条件后语句的前多余的and消除,但语句最后多余的无法截取掉 <where> <if test="判断语句"> 满足条件后的操作 </if> </where>
(3)trim标签
<trim prefix="set" suffixOverrides=","></trim> prefix属性:在语句前添加指定内容 suffix属性:在语句后添加指定内容 suffixOverrides属性:截取掉语句后的指定内容 prefixOverrides属性:截取掉语句前的指定内容
(4)choose,when.otherwise标签组
<choose> <when test="判断语句"> 满足条件后执行的操作 </when> <otherwise>//类似else作用,但只能存在一个 </otherwise> </choose>
(5)foreach标签
<foreach collection="被循环的数组或集合" item="接收每次循环得到的内容" open="循环结果以什么开头" close="循环结果以什么结束"> </foreach>
-
二级缓存
开启二级缓存
1.配置全局配置
<setting name= "cacheEnabled" value="true"></setting>
2.配置映射文件
<cache
eviction="FIFO"//缓存原则(FIFO先进先出)
flushInterval="60000"//有效时间
size="512"//缓存数据数量
readonly="true"/>//权限为只读