Mybatis标签及使用1

Mysatis的特点是以SQL语句为核心的不完全的ORM(关系型映射)框架

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属性由包名加类名组成

执行顺序:先执行<select>标签中SQL语句,在执行<resultMap>继承语句,最后执行<collection><select>标签查询

如果有<association>标签,最后执行

posted @ 2021-06-19 22:03  晚风将至  阅读(145)  评论(0编辑  收藏  举报