Mybatis基本元素

select

映射查询语句

 

元素说明备注
id

它和Mapper的命名空间组合起来是唯一的,提供给MyBatis调用

如果命名空间和id组合起来不唯一,会抛出异常

parameterType

传入参数的类型;可以给出类全名,也可以给出类别名,使用别名必须是MyBatis内部定义或自定义的; 

 

可以选择JavaBeanMap等复杂的参数类型传递给SQL

resultType

从这条语句中返回的期望类型的类的完全限定名或别名。

注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。

使用 resultType resultMap,但不能同时使用 

它是我们常用的参数之一,比如我们总计总条数

就可以把它的值设为int

resultMap

外部 resultMap 的命名引用。使用 resultMap resultType但不能同时使用; 

它是映射集的引用,将执行强大的映射功能,我们可以使用resultType或者resultMap其中的一个,resultMap可以给予我们自定义映射规则的机会

它是MyBatis最复杂的元素,可以配置映射规则,级联,typeHandler

flushCache

调用SQL后,是否要求MyBatis清空之前查询的本地缓存和二级缓存

true/false,默认为false

useCache

启动二级缓存开关,是否要求MyBatis将此次结果缓存

true/false,默认为true

timeout

设置超时时间,超时之后抛出异常,秒

默认值为数据库厂商提供的JDBC驱动所设置的秒数

fetchSize

获取记录的总条数设定

默认值是数据库厂商提供的JDBC驱动所设的条数

resultMap

 用来描述如何从数据库结果集中来加载对象

 

元素说明备注
id

当前命名空间中的一个唯一标识,用于标识一个result map.

如果命名空间和id组合起来不唯一,会抛出异常

type

类的完全限定名, 或者一个类型别名 (内置的别名可以参考上面的表格).

 

可以选择JavaBeanMap等复杂的参数类型传递给SQL

autoMapping

如果设置这个属性,MyBatis将会为这个ResultMap开启或者关闭自动映射。这个属性会覆盖全局的属性 autoMappingBehavior。默认值为:unset

 

子元素

  • constructor
用于在实例化类时,注入结果到构造方法中。一个 pojo 存在没有参数的构造方法,就需要使用 constructor;
idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能
arg - 将被注入到构造方法的一个普通结果
    <constructor>
      <idArg column="id" jdbcType="BIGINT" javaType="java.lang.Long" />
      <arg column="user_name" jdbcType="VARCHAR" javaType="java.lang.String" />
    </constructor>
  • id
一个 ID 结果 ; 标记出作为 ID 的结果可以帮助提高整体性能
 
属性描述
property

POJO中映射到列结果的字段或者属性。如果POJO的属性匹配的是存在的,和给定SQL列名(column元素)相同的,那么MyBatis就会自动映射;

columnSQL的列名,或者是列的别名。一般情况下,这和 传递给 resultSet.getString(columnName方法的参数一样
javaType

配置的Java的类;

jdbcType

配置的数据库的类型;

typeHandler

类型处理器,使用这个属性,你可以覆盖默 认的类型处理器。这个属性值是一个类型处理 器实现类的完全限定名,或者是类型别名。

 
  • result

注入到字段或 JavaBean 属性的普通结果

id result 都将一个列的值映射到一个简单数据类型(字符串,整型,双精度浮点数,日期等)的属性或字段

两者之间的唯一不同是, id 表示的结果将是对象的标识属性,这会在比较对象实例时用到。 这样可以提高整体的性能,尤其是缓存和嵌套结果映射(也就是联合映射)的时候

  • association

复杂类型的关联

嵌套结果映射 关联可以指定为一个 resultMap 元素,或者引用一个

  • collection

一个复杂类型的集合

嵌套结果映射 集合可以指定为一个 resultMap 元素,或者引用一个

  • discriminator

使用结果值来决定使用哪个 resultMap

  case – 基于某些值的结果映射

  嵌套结果映射 – 一个 case 也是一个映射它本身的结果,因此可以包含很多相 同的元素,或者它可以参照一个外部的 resultMap

 

insert, update 和 delete

id

命名空间中的唯一标识符,可被用来代表这条语句。

parameterType

将要传入语句的参数的完全限定类名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset

flushCache

将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:true(对应插入、更新和删除语句)。

timeout

这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动)。

statementType

STATEMENT,PREPARED CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement CallableStatement默认值:PREPARED。

useGeneratedKeys

(仅对 insert update 有用)这会令 MyBatis 使用 JDBC getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL SQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false

keyProperty

(仅对 insert update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

keyColumn

(仅对 insert update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

  •  selectKey
<selectKey keyProperty="id" order="AFTER" resultType="int">
  select LAST_INSERT_ID()
</selectKey>

属性

描述

keyProperty

selectKey 语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

keyColumn

匹配属性的返回结果集中的列名称。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

resultType

结果的类型。MyBatis 通常可以推算出来,但是为了更加确定写上也不会有什么问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。如果希望作用于多个生成的列,则可以使用一个包含期望属性的 Object 或一个 Map

order

这可以被设置为 BEFORE AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素 - 这和像 Oracle 的数据库相似,在插入语句内部可能有嵌入索引调用。

statementType

与前面相同,MyBatis 支持 STATEMENT,PREPARED CALLABLE 语句的映射类型,分别代表 PreparedStatement CallableStatement 类型。

  • sql

用来定义可重用的 SQL 代码段,可以包含在其他语句中

参数:向sql语句中传递的可变参数

预编译 #{}:将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,能够很大程度防止sql注入;

传值    ${}:传入的数据直接显示生成在sql中,无法防止sql注入;

表名、选取的列是动态的,order byin操作, 可以考虑使用$

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值