Mybatis 映射配置文件的标签总结:

一、标签分类

1.定义SQL语句

insert标签delete标签update标签select标签

2.配置关联关系

关联的是集合:collection标签 ;关联的是单个对象 :association标签

两者都是用于resultMap返回关联映射

标签属性:
1.property resultMap返回实体类中字段和result标签中的property一样

2.column 数据库的列名或者列标签别名,是关联查询往下一个语句传送值。注意: 在处理组合键时,您可以使用column=“{prop1=col1,prop2=col2}”这样的语法,设置多个列名传入到嵌套查询语句。这就会把prop1和prop2设置到目标嵌套选择语句的参数对象中。

3.javaType 一般为ArrayList或是java.util.List

4.ofType java的实体类,对应数据库表的列名称,即关联查询select对应返回的类

5.select执行一个其他映射的sql语句返回一个java实体类型

3.配置java对象属性与查询结果集中列名的对应关系

resultMap
属性: id 唯一标识 ; type返回类型;extends 继承别的resultMap(可选)
关联其他标签:
id 设置主键使用,使用此标签配置映射关系(可能不止一个)
result一般属性的配置映射关系,一般不止一个
association 关联一个对象使用
collection 关联一个集合使用

4.控制动态SQL拼接

foreach
if
choose

5.格式化输出

where set trim

6.定义常量

sql

7.其他

include

二、标签应用

1.查询<select> 标签用于定义查询

  • 查询返回list Mybatis 映射配置文件(mepper配置文件的标签详解)

  • 当map 作为参数时 映射配置为#{key}
    特殊符号的处理
    方式1:使用转义字符
    方式2:使用 CDATA 标记。

<![CDATA[内部写包含特殊字符的内容]]>

Mybatis 映射配置文件(mepper配置文件的标签详解)
Mybatis 映射配置文件(mepper配置文件的标签详解)

2.修改<update> 标签用于定义修改

  • Mybatis 映射配置文件(mepper配置文件的标签详解)

传参异常: org.apache.ibatis.binding.BindingException:

Parameter ‘password’ not found. Available parameters are [arg1, arg0, param1, param2]

  • Mybatis 映射配置文件(mepper配置文件的标签详解)

修改方法:
mepper接口传递参数时:
(1)内置参数名是arg(索引) 从0开始.
(2)内置参数名是param(序号) 从1开始.

  • Mybatis 映射配置文件(mepper配置文件的标签详解)

(3)按照命名参数来传递 使用mybatis框架的@Param 注解

  • 注解绑定好之后, mapper配置文件中可以按照名称来配置了。Mybatis 映射配置文件(mepper配置文件的标签详解)

3.删除<delete> 标签用于定义删除

  • 参数个数只有一个的时候 标签里的#{ }大括号随便写
    *Mybatis 映射配置文件(mepper配置文件的标签详解)

4.新增<insert> 标签用于定义新增。

标签属性:

id:设置为接口的方法名。

parameterType:mybatis注册的别名可以不写。自己 定义的别名要标注

useGeneratedKeys="true"表示使用数据库中自动生成的主键回填实体对象

keyProperty:对象的主键即指定实体的主键对应的属性

keyColumn:数据库主键即指定数据库中的主键列的名字

  • 参数是一个对象的时候 标签里的#{ }大括号里必须是对象的属性
    Mybatis 映射配置文件(mepper配置文件的标签详解)

5.增insert/ 改update/删delete共同的属性

  • id唯一的名称,对应dao中mapper的接口方法的名称

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

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

  • timeout 指定超时时间,单位是秒。默认未设置,使用驱动的设置值。即这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动)。

  • statementType STATEMENT,PREPARED 或 CALLABLE 的一个。默认值:PREPARED。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,当需要访问存储过程时,考虑使用CALLABLE

  • useGeneratedKeys(仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server这样的关系数据库管理系统的自动递增字段, oracle使用序列是不支持的,通过selectKey可以返回主键),默认值:false。

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

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

  • databaseId 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。

相关文章: