Mybatis标签及使用1

摘要:
从用户表查询集合集合标签<属性需要映射到JavaBean属性名称。type引用映射到列表集合属性<关联映射用户定义的类型和属性需要映射到JavaBean属性名称。JavaType引用前面属性的类名,结果子标记<

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 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   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 parameterType="map" resultType="user">

resultType只有user就可以表示 parameterType输入 resultType输出

settings延迟加载配置文件标签

<settings><setting name="lazyLoadingEnabled" value="true"></setting></settings>

延迟加载配置文件lazyLoadingEnabled作用延迟加载,嵌套映射时,用到的加载,用不到的不加载

select标签嵌套foreach标签遍历数组

<<select 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" extends="commomrs">

创建一个新的ID,继承前面commomrs

一对多查询

<resultMap type="user" 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 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" extends="commomrs"><collection property="olist" ofType="Orders" column="id" select="getOlistByUid"></collection></resultMap>

<<select   parameterType="int" resultMap="otmrs2">
  select * from user where id=#{uid}
</select>
<select 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>标签,最后执行

免责声明:文章转载自《Mybatis标签及使用1》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用gulp清除、移动、压缩、合并、替换代码关于HTTP协议,一篇就够了下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在WPF中集成OpenTK

OpenGL是针对Windows Forms开发,下面是在WPF环境下的集成方法。 (P.S. 如果只在windows下使用,其实WPF 3D或DirectX是更好的选择)。 1.新建一个WPF项目。 2.添加以下references到项目中: System.Windows.Forms WindowsFormsIntegration OpenTK Open...

命令行改变屏幕分辨率 cds ChangeDisplaySettings

执行文件 https://files.cnblogs.com/files/nlsoft/cds.7z #include <windows.h> #include <stdio.h> void SetResolution(int width, int height) { DEVMODE dm; memset(&...

【封装那些事】 未利用封装

未利用封装 客户代码使用显式类型检查(使用一系列if-else或switch语句检查对象的类型),而不利用出层次结构内已封装的类型变化时,将导致这种坏味。 为什么要利用封装? 一种臭名昭著的坏味是,在客户代码中使用条件语句(if-else或switch语句)来显式地检查类型,并根据类型执行相应的操作。我们这里讨论的是:要检查的类型都封装在了层次结构中,但...

tp5+双语言

1.配置 // 是否开启多语言 'lang_switch_on' => true, //多语言列表 'lang_list' => ['id-id','en-us'], // 默认语言 'default_lang' => 'id-id', 2.控制器 &l...

iOS学习笔记之typedef

typedef unsigned long long weiboId; typedef 定义一个使用方便的类型,谓之为“宏定义“。 unsigned long long 是一种无符号的长长整型。本应该是这样,unsigned long long int ,这里省略了int ,编译器会自动认可。 unsigned long long ,是64 位的数据,8...

Mybatis分页插件PageHelper简单使用

1. 引入分页插件 引入分页插件有下面2种方式,推荐使用 Maven 方式。 1). 引入 Jar 包 你可以从下面的地址中下载最新版本的 jar 包 https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/ http://repo1....