zoukankan      html  css  js  c++  java
  • 课时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 {
    }
  • 相关阅读:
    c# WinForm 定时执行某个后台操作 如把B文件夹下的文件Copy到A文件夹下
    c# 创建指定大小的空字符填充的文本文件 在指定位置读写相关内容
    c# DirectShow 通过IAMVideoProcAmp的Set方法 来设置视频图像的Brightness 调整亮度
    [转]灰度图像的腐蚀算法和细化算法(C#代码)
    利用fleximage实现图片上传
    利用acts_as_ferret实现全文检索
    纯CSS无hacks的跨游览器多列布局
    IE私有CSS样式属性一览
    利用thinking sphinx实现全文检索
    搭建rails运行环境
  • 原文地址:https://www.cnblogs.com/thisHBZ/p/12459154.html
Copyright © 2011-2022 走看看