课时17:鉴别器和别名问题

.1)通过resultMap来解决数据库的字段和类中的属性不一致的问题

  1.在mapper文件中编写如下

<select id="queryStudentByNoWithResultMap" resultMap="StudqueryStudentByNoWithMap">
        select * from student where sno=#{xx}
    </select>
    <resultMap id="StudqueryStudentByNoWithMap" type="student">
        <id property="stuno" column="sno"></id>
        <result property="stuName" column="sname"></result>
        <result property="stuAge" column="sage"></result>
        <result property="graName" column="gname"></result>
        <result property="stuSex" column="ssex"></result>
    </resultMap>

    1.1 resultMap分为主键与非主键

    1.2 通过column指定的字段返回的结果填入property中填写的java属性

.2)鉴别器(对查询的结果进行分支处理)

  1.列如 如果查询出的年级为a年级就显示昵称 如果查询出的年级为 b年级就显示b年级就显示真实名称

    1.1 实体不需要改造因为最终的结果只有一个 可以使用stuName来接收名称或者昵称

    1.2 鉴别器的编写

 <select id="queryStudentsWithResultMap" resultMap="StudqueryStudentByNoWithMap2">
        select * from student
    </select>
    <resultMap id="StudqueryStudentByNoWithMap2" type="student">
        <id property="stuno" column="sno"></id>

        <result property="stuAge" column="sage"></result>
        <result property="graName" column="rname"></result>
        <result property="stuSex" column="ssex"></result>
        <discriminator javaType="String" column="rname">
            <case value="S1" resultType="student">
                <result property="stuName" column="sname"></result>
            </case>
            <case value="aji" resultType="student">
                <result property="stuName" column="nickname"></result>
            </case>
        </discriminator>
    </resultMap>

       1.2.1 javaType:这个要被赋值的属性类型 column:用于做条件的字段 value:条件具体值 resultType:返回的类型

      1.2.2 最后填写映射内容

<result property="stuName" column="sname"></result>
<result property="stuName" column="nickname"></result>

.3) 别名的问题

  1.在主配置文件配置别名 (包和子包)中的所有类 起了别名

<typeAliases>
        <package name="org.hbz.entity"/>
    </typeAliases>

  2.引发了一个问题加入我本包里面的类名与子包里面的类名一致了怎么办?

     2.1 只需要在两个类任意一个类上面加上这么一个注解 就可以区分了  但是设置的值不要和类名一致

@Alias("MyStudent")
public class Student {
}
原文地址:https://www.cnblogs.com/thisHBZ/p/12459154.html