一、mapper xml文件
SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):
cache – 给定命名空间的缓存配置。cache-ref – 其他命名空间缓存配置的引用。resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除,这里不会记录。sql – 可被其他语句引用的可重用语句块。insert – 映射插入语句update – 映射更新语句delete – 映射删除语句select – 映射查询语句
1、
select
(1)接受一个 int(或 Integer)类型的参数
(2)返回一个 HashMap 类型的对象
(3)select 元素有很多属性允许你配置,来决定每条语句的作用细节
2、insert, update 和 delete
(1)配置
(2)sql示例
insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#{email},#{bio}) update Author set username = #{username}, password = #{password}, email = #{email}, bio = #{bio} where id = #{id} delete from Author where id = #{id}
(3)生成主键
insert into Author (username,password,email,bio) values (#{username},#{password},#{email},#{bio})
(4)多行插入
insert into Author (username, password, email, bio) values (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
3、sql
(1)定义可重用的 SQL 代码段,可以包含在其他语句中:
${alias}.id,${alias}.username,${alias}.password
这个 SQL 片段可以被包含在其他语句中:
属性值也可以被用在 include 元素的 refid 属性里:
或 include 内部语句中:
${prefix}Table
4、参数(Parameters)
(1)参数也可以指定一个特殊的数据类型:
#{property,javaType=int,jdbcType=NUMERIC}
(2)指定一个特殊的类型处理器类(或别名)
#{age,javaType=int,jdbcType=NUMERIC,typeHandler=MyTypeHandler}
(3)确定小数点后保留的位数
#{height,javaType=double,jdbcType=NUMERIC,numericScale=2}
(4)mode 属性允许你指定 IN,OUT 或 INOUT 参数
二、Result Maps
1、一个 JavaBean 可以被映射到 ResultSet
2、类型别名
3、可以在 SELECT 语句中对列使用别名(这是一个 基本的 SQL 特性)来匹配标签
4、使用外部的 resultMap
5、高级结果映射
有待学习。。。。。
6、自动映射
(1)需要将 mapUnderscoreToCamelCase设置为true。
(2)id 和 userName列将被自动映射, hashed_password 列将根据配置映射
(3)三种自动映射等级:
NONE - 禁用自动映射。仅设置手动映射属性。PARTIAL - 将自动映射结果除了那些有内部定义内嵌结果映射的(joins).FULL - 自动映射所有。
7、缓存