第二章 SQL映射文件详解
SQL 映射文件中的几个顶级元素
select 元素
select是MyBatis中最常用的元素之一
select语句有很多属性可以详细配置每一条语句
id
命名空间中唯一的标识符
接口中的方法与映射文件中的SQL语句id一一对应
parameterType
传入SQL语句的参数类型
resultType
SQL语句返回值类型的完整类名或别名
描述如何将结果集映射到Java对象
<resultMap type="User" id="userList">
<result property="id" column="id"/>
<result property="userCode" column="userCode"/><!--property里是实体类的字段 coliumn是数据库里的列-->
<result property="userName" column="userName"/>
<result property="userRole" column=“userRole"/>
<result property="userRoleName" column="roleName"/>
</resultMap>
<select id="getUserList" resultMap="userList" parameterType="User"><!--一个外部resultMap的id,表示返回结果映射到哪一个resultMap上-->
select u.*,r.roleName from smbms_user u,smbms_role r
where u.userName like CONCAT (‘%’,#{userName}, ‘%’)
and u.userRole = #{userRole} and u.userRole = r.id
</select>
resultType :直接表示返回类型
基本数据类型
复杂数据类型
resultMap :对外部resultMap的引用
应用场景:
**数据库字段信息与对象属性不一致**
==复杂的联合查询,自由控制映射结果==
int、String、Date等
只能传入一个,通过#{参数名}即可获取传入的值
Java实体类、Map等
通过#{属性名}或者#{map的keyName}即可获取传入值
resultMap的自动映射级别-autoMappingBehavior
PARTIAL(默认):自动匹配所有
NONE:禁止自动匹配
insert元素
id parameterType
<insert id="add" parameterType="User" >
insert into smbms_user (userCode,userName,userPassword)
values ( #{userCode},#{userName},#{userPassword})
</insert>
update元素
parameterType
<update id ="modify" parameterType="User">
update smbms_user set userCode = #{userCode},
userName = #{userName},
userPassword = #{userPassword} where id = #{id}
</update>
delete元素
id
parameterType
<delete id ="deleteUserById" parameterType="int">
delete from smbms_user where id = #{id}
</delete>
resultMap属性
id:resultMap的唯一标识
type:
Java实体类
resultMap子元素
id:一般对应数据库中该行的主键id,设置此项可提高MyBatis性能
result:映射到JavaBean的某个“简单类型”属性
association
映射到JavaBean的某个“复杂类型”属性,比如JavaBean类
collection
映射到JavaBean的某个“复杂类型”属性,比如集合
association 元素
复杂的类型关联,一对一
内部嵌套
映射一个嵌套JavaBean属性
属性
property:映射数据库列的实体对象的属性
javaType:完整Java类名或者别名
resultMap:引用外部resultMap
子元素
id
result
property:映射数据库列的实体对象的属性
column:数据库列名或者别名
collection 元素
复杂类型集合,一对多
内部嵌套
映射一个嵌套结果集到一个列表
属性
property:映射数据库列的实体对象的属性
ofType:完整Java类名或者别名(集合所包括的类型)
resultMap:引用外部resultMap
子元素
id
result
property:映射数据库列的实体对象的属性
column:数据库列名或者别名
除MyBatis框架内建的类型别名,还可以在配置文件中使用typeAliases元素为自定义的Java类型设置别名。
2.2.2 实现多条件查询
将查询条件封装成Java对象作为传参
将查询条件封装成Map对象作为传参
存放成一个<String,Object>map对象,String 的值和需要的字段值需要相同,以及它该赋的值 放进value里
使用@Param注解实现多参数传参
MyBatis缓存
一级缓存
二级缓存
二级缓存的配置
MyBatis的全局cache配置
在Mapper XML文件中设置缓存,默认情况下是没有开启缓存的
在Mapper XML文件配置支持cache后,如果需要对个别查询进行调整,可以单独设置cache
<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<select id="selectAll" resultType="Emp"
useCache="true">
原文:https://www.cnblogs.com/gaobangguo/p/14247178.html