SQL映射文件
Posted 眼泪,还是流了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL映射文件相关的知识,希望对你有一定的参考价值。
SQL映射文件的几个顶级元素
mapper - namespace
cache - 配置给定命名空间的缓存
cache-ref – 从其他命名空间引用缓存配置
resultMap –用来描述数据库结果集和对象的对应关系
sql – 可以重用的SQL块,也可以被其他语句引用
insert – 映射插入语句
update – 映射更新语句
delete – 映射删除语句
select – 映射查询语句
注意:按照定义的顺序
mapper
namespace:命名空间.(dtd)
namespace和子元素的id联合保证唯一,区别不同的mapper
注意:
namespace的命名必须跟某个接口同名
接口中的方法与映射文件中SQL语句id一一对应
select
a.查询语句的标签
b.常用属性
id
命名空间中唯一的标识符
接口中的方法与映射文件中的SQL语句id一一对应
parameterType
传入SQL语句的参数类型
resultType
SQL语句返回值类型的完整类名或别名
c. parameterType
基础数据类型
int、String、Date等
只能传入一个,通过#{参数名}即可获取传入的值
复杂数据类型
Java实体类、Map等
通过#{属性名}或者#{map的keyName}即可获取传入值
注意:#{}和${}的区别
${}是原样输出.(可以导致sql注入)
#{}是会给值加入一对双引号.‘value‘.(建议适用这个)
d. resultMap
<resultMap type="数据类型" id="id">
<result property="d性名" column="数据库列名"/>
<result property="userCode" column="userCode"/>
</resultMap>
注意:resultType和resultMap的区别
resultType :直接表示返回类型
基本数据类型
复杂数据类型
resultMap :对外部resultMap的引用
应用场景:
数据库字段信息与对象属性不一致
复杂的联合查询,自由控制映射结果
e.resultMap的自动映射
前提:字段名与属性名一致
设置级别autoMappingBehavior:
NONE : 禁止映射
PARTIAL:自动匹配所有(没有嵌套association,collection)
FULL: 自动匹配所有.
例:<setting name="autoMappingBehavior" value="FULL"/>
f.属性
id 在命名空间中唯一的标识符,可以被用来引用这条语句
parameterType 将会传入这条语句的参数类的完全限定名或别名
resultType 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultType或resultMap,但不能同时使用
resultMap 命名引用外部的resultMap
flushCache 将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false
useCache 将其设置为true,将会导致本条语句的结果被缓存。默认值:true
timeout 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)
fetchSize 这是暗示驱动程序每次批量返回的结果行数
statementType STATEMENT,PREPARED或CALLABLE的一种。让MyBatis选择使用Statement,PreparedStatement或CallableStatement。默认值:PREPARED
resultSetType FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)
insert(增加)
id
parameterType
例:
<insert id="add" parameterType="User" >
insert into smbms_user (userCode,userName,userPassword)
values ( #{userCode},#{userName},#{userPassword})
</insert>
注意:insert、update、delete元素均没有resultType属性
默认返回int类型.
update
例:
<update id ="modify" parameterType="User">
update smbms_user
set userCode = #{userCode},
userName = #{userName},
userPassword = #{userPassword}
where id = #{id}
</update>
delete
例:
<delete id ="deleteUserById" parameterType="int">
delete from smbms_user where id = #{id}
</delete>
以上是关于SQL映射文件的主要内容,如果未能解决你的问题,请参考以下文章