parameterType:在SQL映射文件中指定输入参数类型的,基本类型(int、float)、包装数据类型(String、Integer)以及用户自己编写的JavaBean封装类
resultType:指定数据库返回信息对应的Java的数据类型。在加载SQL配置,并绑定指定输入参数和运行SQL之后,会得到数据库返回的相应结果
resultMap:建立SQL查询结果字段与实体属性的映射关系,使用一个嵌套的结果映射来处理通过join查询结果集,映射成Java实体类型
id:用于设置主键字段与领域模型属性的映射关系
result:用于设置普通字段与领域模型属性的映射关系
property:需要映射到JavaBean的属性名称,自定义类型的属性名
column:数据表的列名或者标签别名,当前结果中要关联查询的列
JavaType:一个完整的类名(别名)。自定义属性的类型
jdbcType:数据表支持的类型列表。这个属性只在insert,update 或delete 的时候针对允许空的列有用。JDBC 需要这项,但MyBatis 不需要。如果你是直接针对JDBC 编码,且有允许空的列,而你要指定这项。
select:执行一个其他映射的SQL语句返回一个Java,关联查询时调用的SQL语句
ofType:集合的泛型
#{}:占位符。该符号接受输入参数,在大括号中编写参数名称来接受对应参数
${}:拼接符号,拼接SQL语句(例如模糊查询)
association:映射自定义类型
property:自定义类型的属性
select * from user:从user表中进行查询
collection集合标签
<collection property="olist" ofType="Orders"/>
property需要映射到JavaBean属性名称 ofType指映射到list集合属性的类型
association类标签
<association property="items" javaType="items"/>
association映射自定义的类型、property需要映射到JavaBean属性名称 、JavaType指前面属性的类名
result子标签
<result column="name" property="name"/>
column数据表的列名、property需要映射到JavaBean属性名称
select查询标签
<<select id="oneToMany2" parameterType="int" resultMap="otmrs2">
id设置主键字段与模型属性的映射关系(XML映射文件与接口名字相同)、parameterType在SQL映射文件中指定输入参数类型的、
resultMap指定数据库返回信息对应的Java的数据类型
select执行SQL语句标签
<select>
select * from user where id=#{uid}
</select>
select执行一个其他映射的SQL语句返回一个Java,关联查询时调用的SQL语句
从数据库user表中查询id为输入值的用户信息
select查询标签
<select id="getOlistByUid" parameterType="int" resultType="Orders">
select * from orders where userId=#{uid}
</select>
从数据库orders表中查询用户的订单信息
typeAliases起别名标签
<typeAliases> <package name="com.offcn.bean" /> </typeAliases>
typeAliases起别名,只要是在com.offcn.bean包里的类就可以直接用类表示
<<select id="getDyNameOrSex" parameterType="map" resultType="user">
resultType只有user就可以表示 parameterType输入 resultType输出
settings延迟加载配置文件标签
<settings> <setting name="lazyLoadingEnabled" value="true"></setting> </settings>
延迟加载配置文件lazyLoadingEnabled作用延迟加载,嵌套映射时,用到的加载,用不到的不加载
select标签嵌套foreach标签遍历数组
<<select id="getUserByIdsArray" parameterType="java.lang.reflect.Array" resultType="user"> select * from user where id in ( <foreach collection="array" item="uid" separator=","> #{uid} </foreach> ) </select>
遍历数组
一对多继承一对一的resultMap标签
<resultMap type="user" id="commomrs">
前面定义ID是commomrs
<resultMap type="user" id="otors" extends="commomrs">
创建一个新的ID,继承前面commomrs
一对多查询
<resultMap type="user" id="otmrs" extends="commomrs">
<collection property="olist" ofType="Orders"> <result property="number" column="number" /> <result property="note" column="note" /> </collection>
</resultMap>
collection标签作用集合,一对多查询,嵌套到resultMap手动映射标签里边,property指映射到Javabean包里边属性名称,column指数据表中的列名
select标签嵌套foreach标签自动映射foreach循环
<<select id="getUserByIds" parameterType="java.util.List" resultType="user">
select * from user where id in (
<foreach collection="list" item="uid" separator=",">
#{uid}
</foreach>
)
</select>
自动映射foreach循环 collection输入的参数list集合(数据库中list表) item:指定集合的每一项 sepatator:集合中两项之间的分隔开 open:循环体前边拼接的字符
手动映射之嵌套
<resultMap type="user" id="otmrs2" extends="commomrs"> <collection property="olist" ofType="Orders" column="id" select="getOlistByUid"></collection> </resultMap>
<<select id="oneToMany2" parameterType="int" resultMap="otmrs2">
select * from user where id=#{uid}
</select>
<select id="getOlistByUid" parameterType="int" resultType="Orders">
select * from orders where userId=#{uid}
</select>
手动映射之嵌套、手动映射resultMap,属性元素(type、id、extends)
映射里边会有collection集合属性、属性元素(property、ofType、column、select)
查询select属性、属性元素(id、parameterType、resultMap)
注:<select>标签里边resultType返回值是<resultMap>的id属性值
<collection>集合标签select属性是关联查询的SQL语句,若要调用的SQL语句不在同一个映射文件中,则写成命名空间namespace+SQL的id,否则直接通过SQL的id直接调用。
<collection>
执行顺序:先执行<select>标签中SQL语句,在执行<resultMap>继承语句,最后执行<collection>中<select>标签查询
如果有<association>