标签:student 存在 auto 复杂 一对多 写法 学生 bean 类型
mybatis 在进行 select 查询操作的时候,返回类型可以用 resultType,也可以用 resultMap;
resultType 是直接表示返回类型的(一般返回为基本数据类型时使用,当查询的是一条SQL数据时,且这条SQL数据的每个字段都和一个Javabean 中的属性名 与之对应,mybatis 会通过 autoMapping ,将每个字段的值赋给 Javabean),而当字段名和属性名不一致时,这时可以使用 resultMap
resultMap 是对外部的一个 ResultMap 标签的引用,并且 resultType 跟 resultMap 不能同时存在。
<!-- 单个对象查询第二中写法,手动映射参数 --> <resultMap type="teacher" id="restMap"> <id column="id" property="id"/> <result column="name" property="name"/> </resultMap> <select id="selBy" resultMap="restMap" parameterType="int"> select * from teacher where id=#{id} </select>
<!-- 自动映射参数 -->
<select id="selById" resultType="teacher" parameterType="int">
select * from teacher where id=#{id}
</select>
<resultMap type="student" id="stuMap">
<!-- column:数据库中的列名称,property 实体类定义的属性名称,id 标签表示表中的主键列,result 标签是除了主键列之外的列 -->
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="tid" property="tid"/>
<!--property是给实体类赋值的参数,取值是实体类成员变量的名称,column是到数据库中查询的依据,取值是数据库中的列名 -->
<!-- 如果管理一个对象使用 association 调用com.mapper.TeacherMapper.selById 的查询方法,将 column的值传递给selById-->
<association property="teacher" column="tid" select="com.mapper.TeacherMapper.selById"></association>
</resultMap>
<select id="selBy" resultMap="stuMap">
select * from student
</select>
<resultMap type="teacher" id="myMap">
<id column="id" property="id"/>
<result column="name" property="name"/>
<collection property="list" select="com.mapper.StudentMapper.selByTid" column="id"></collection>
</resultMap>
<select id="selAll" resultMap="myMap">
select * from teacher
</select>
参考:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps
select:用于加载复杂类型属性的映射语句的 ID,它会从 column 属性指定的列中检索数据,作为参数传递给目标 select 语句。 具体请参考下面的例子。注意:在使用复合主键的时候,你可以使用 column="{prop1=col1,prop2=col2}" 这样的语法来指定多个传递给嵌套 Select 查询语句的列名。这会使得 prop1 和 prop2 作为参数对象,被设置为对应嵌套 Select 语句的参数。
<resultMap id="blogResult" type="Blog"> <association property="author" column="author_id" javaType="Author" select="selectAuthor"/> </resultMap> <select id="selectBlog" resultMap="blogResult"> SELECT * FROM BLOG WHERE ID = #{id} </select> <select id="selectAuthor" resultType="Author"> SELECT * FROM AUTHOR WHERE ID = #{id} </select>
property:映射到列结果的字段或属性。 -----------------指的是 javaBean 中的属性 类型(一个javaBeen 中的属性可以是基本数据类型也可以是 Object)
javaType:一个 Java 类的完全限定名,或一个类型别名。---------------------指的是一个 JavaBean class类型( A a = new a(); 理解为 A 类型)
标签:student 存在 auto 复杂 一对多 写法 学生 bean 类型
原文地址:https://www.cnblogs.com/ressso/p/12088799.html