- <constructor>元素是MyBatis中用于映射Java对象构造器的标签。它可以用于在映射文件中指定Java对象的构造器参数,并将其与查询结果进行映射。
- 为了将结果注入构造方法,MyBatis需要通过某种方式定位相应的构造方法。
- 在下面的例子中,MyBatis搜索一个声明了三个形参的的构造方法,以 java.lang.Integer , java.lang.String and int 的顺序排列。
示例
<constructor>
<idArg column="id" javaType="int" name="id"/>
<arg column="username" javaType="String" name="username"/>
<arg column="age" javaType="_int" name="age"/>
</constructor>
- <constructor>元素可以包含多个<arg>子元素,每个<arg>子元素都可以指定一个构造器参数。<idArg>可以用于在映射文件中指定Java对象的构造器参数,并将其与查询结果进行映射
子标签 |
说明 |
<idArg> |
用于指定 Java 对象的 ID 属性 |
<arg> |
用于指定构造器中的每个参数 |
属性 |
描述 |
column |
数据库中的列名,或者是列的别名。一般情况下,这和 传递给 resultSet.getString(columnName) 方法的参数一样。 |
javaType |
一个 Java 类的完全限定名,或一个类型别名(参考上面内建类型别名的列表)。 如果你映射到一个 JavaBean,MyBatis 通常可以断定类型。然而,如 果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证期望的 行为。 |
jdbcType |
JDBC 类型,所支持的 JDBC 类型参见这个表格之前的“支持的 JDBC 类型”。 只需要在可能执行插入、更新和删除的允许空值的列上指定 JDBC 类型。这是 JDBC 的要求而非 MyBatis 的要求。如果你直接面向 JDBC 编程,你需要对可能为 null 的值指定这个类型。 |
typeHandler |
我们在前面讨论过的默认类型处理器。使用这个属性,你可以覆盖默 认的类型处理器。这个属性值是一个类型处理 器实现类的完全限定名,或者是类型别名。 |
select |
用于加载复杂类型属性的映射语句的 ID,它会从 column 属性中指定的列检索数据,作为参数传递给此 select 语句。具体请参考 Association 标签。 |
resultMap |
ResultMap 的 ID,可以将嵌套的结果集映射到一个合适的对象树中,功能和 select 属性相似,它可以实现将多表连接操作的结果映射成一个单一的ResultSet。这样的ResultSet将会将包含重复或部分数据重复的结果集正确的映射到嵌套的对象树中。为了实现它, MyBatis允许你 “串联” ResultMap,以便解决嵌套结果集的问题。想了解更多内容,请参考下面的Association元素。 |
name |
构造方法形参的名字。从3.4.3版本开始,通过指定具体的名字,你可以以任意顺序写入arg元素。参看上面的解释。 |
columnPrefix |
用于指定查询结果集中的列名前缀,以便将多个列名映射到Java对象的ID属性上 |