zoukankan      html  css  js  c++  java
  • ResultMap&&鉴别器&&别名

    ResultMap:字段和属性名的对应关系

    修改数据库列名称

    alter table student1 rename column stuno to sno;
    alter table student1 rename column stuname to sname;
    alter table student1 rename column stuage to sage;
    alter table student1 rename column graname to gname;

     字段名->属性名

    srcorgmyymapperstudentMapper.xml

        <!--如果字段名和属性名不一致,需要使用resultMap指定对应关系-->
        <select id="queryStudentByStunoWithResultMap" parameterType="int"
                resultMap="studentResultMap">
            select sno,sname,sage,gname from student1 where sno=#{sno}
        </select>
        <resultMap id="studentResultMap" type="student">
            <!--主键-->
            <id column="sno" property="stuNo"/>
            <!--普通字段-->
            <result column="sname" property="stuName"/>
            <result column="sage" property="stuAge"/>
            <result column="gname" property="graName"/>
        </resultMap>

    srcorgmyymapperStudentMapper.java

        //stuNo stuName stuAge
        Student queryStudentByStunoWithResultMap(int sno);

    srcorgmyy estTest.java

            //Connection - SqlSession操作Mybatis
            //conf.xml->reader
            Reader reader = Resources.getResourceAsReader("conf.xml");
            //reader->sqlSession
    
            //可以通过build的第二参数 指定数据库环境
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"devOracle");
            SqlSession session = sessionFactory.openSession();
    
            StudentMapper studentMapper=session.getMapper(StudentMapper.class);
    
            Student student=studentMapper.queryStudentByStunoWithResultMap(1);
            System.out.println(student);
    
            session.close();

    在resultMap中还可以使用鉴别器:对相同sql中不同字段值进行判断,从而进行不同得处理。

    srcorgmyymapperstudentMapper.xml

        <select id="queryStudentsWithResultMap"
                resultMap="studentResultMap">
            select sno,sname,nikename,sage,gname from student1
        </select>
        <resultMap id="studentResultMap" type="student">
            <!--主键-->
            <id column="sno" property="stuNo"/>
            <!--普通字段-->
            <!--<result column="sname" property="stuName"/>-->
            <result column="sage" property="stuAge"/>
            <result column="gname" property="graName"/>
            <!--鉴别器:对查询结果进行分支处理,如果是a年级,则真名,如果b年级,显示昵称-->
            <discriminator javaType="String" column="gname">
                <case value="a" resultType="student">
                    <result column="sname" property="stuName"/>
                </case>
                <case value="b" resultType="student">
                    <result column="nikename" property="stuName"/>
                </case>
            </discriminator>
        </resultMap>

    srcorgmyymapperStudentMapper.java

        List<Student> queryStudentsWithResultMap();

    srcorgmyy estTest.java

            //Connection - SqlSession操作Mybatis
            //conf.xml->reader
            Reader reader = Resources.getResourceAsReader("conf.xml");
            //reader->sqlSession
    
            //可以通过build的第二参数 指定数据库环境
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"devOracle");
            SqlSession session = sessionFactory.openSession();
    
            StudentMapper studentMapper=session.getMapper(StudentMapper.class);
    
            List<Student> students=studentMapper.queryStudentsWithResultMap();
            System.out.println(students);
    
            session.close();

    别名

    srcconf.xml

        <typeAliases>
            <!--单个别名(别名忽略大小写)  -->
            <!-- <typeAlias type="org.myy.entity.Student" alias="student"/> -->
            <!--批量定义别名(别名忽略大小写) 以下会自动将该包中的所有类批量定义别名 :别名就是类名(不带包名,忽略大小写) -->
            <package name="org.myy.entity"/>
        </typeAliases>

    如果在批量设置别名时,出现了冲突。可以使用@Alias("student")区分

    srcorgmyyentityStudent.java

    @Alias("student1")
    public class Student {
  • 相关阅读:
    Spring MVC学习03页面跳转
    Spring Boot学习07配置加载顺序
    Spring MVC学习01从空白Maven项目搭建环境
    Spring MVC学习05JSON序列化
    剑指Offer 44 数字序列中某一位的数字
    Spring MVC学习06异常解析器
    MSSQL·查看DB中所有表及列的相关信息
    MSSQL·查询数据库中所有索引的相关信息
    MSSQL·最长输出长度限制之解决方案
    .Net Core·热加载的实现及测试
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13267049.html
Copyright © 2011-2022 走看看