[mybatis]映射文件_select_resultMap_discriminator鉴别器

Posted 唐火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[mybatis]映射文件_select_resultMap_discriminator鉴别器相关的知识,希望对你有一定的参考价值。

discriminator

  • 鉴别器:mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为

  • 封装Employee:

    • 如果查出的是女生;就把部门信息查询出来,否则不查询

    • 如果查出的是男生;把last_name这一列的值赋给email

  <resultMap id="MyEmpDis" type="com.atguigu.mybatis.bean.Employee">

        <id column="id" property="id"></id>
        <result column="last_name" property="lastName"></result>
        <result column="email" property="email"></result>

        <result column="gender" property="gender"></result>

        <!--
        column:指定判定的列名
        javaType:列值对应的java类型
        -->

        <discriminator javaType="string" column="gender">
            <!--            女生
            resultType:指定封装的结果类型,不能缺少
            -->
            <case value="0" resultType="com.atguigu.mybatis.bean.Employee">


                <association property="dept" select="com.atguigu.mybatis.dao.DepartmentMapper.getDeptById"
                             column="d_id"></association>

            </case>
            <!--            男生-->
            <case value="1" resultType="com.atguigu.mybatis.bean.Employee">

                <id column="id" property="id"></id>
                <result column="last_name" property="lastName"></result>
                <result column="last_name" property="email"></result>

                <result column="gender" property="gender"></result>

            </case>
        </discriminator>

    </resultMap>
    <!--    public Employee getEmpByIdStep(Integer id);-->
    <select id = "getEmpByIdStep" resultMap="MyEmpDis">
        select * from tb1_employee where id = #id
    </select>


  @Test
    public void test04() throws IOException 
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

        SqlSession sqlSession = sqlSessionFactory.openSession();

        try
        
            EmployeeMapperPlus mapper = sqlSession.getMapper(EmployeeMapperPlus.class);


            Employee employee = mapper.getEmpByIdStep(3);

            System.out.println(employee);

            System.out.println(employee.getDept());

        finally 

            sqlSession.close();

        
    

以上是关于[mybatis]映射文件_select_resultMap_discriminator鉴别器的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis_映射文件配置

[mybatis]映射文件_参数处理_#取值时指定参数相关规则

[mybatis]映射文件_select_返回集合(List,Map)

[mybatis]映射文件_参数处理

mybatis映射文件select_resultMap_关联查询_collection定义关联集合

[mybatis]映射文件_参数处理_#和$取值区别