zoukankan      html  css  js  c++  java
  • 使用discriminator实现鉴别器

    1在人员接口实现方法

    public Employee getEmpByIdStep(Integer id);

    2在映射文件进行配置

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

    3写鉴别器

    <!-- <discriminator javaType=""></discriminator>
    鉴别器:mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为
    封装Employee:
    如果查出的是女生:就把部门信息查询出来,否则不查询;
    如果是男生,把last_name这一列的值赋值给email;
    -->
    <resultMap type="com.atguigu.mybatis.bean.Employee" id="MyEmpDis">
    <id column="id" property="id"/>
    <result column="last_name" property="lastName"/>
    <result column="email" property="email"/>
    <result column="gender" property="gender"/>
    <!--
    column:指定判定的列名
    javaType:列值对应的java类型 -->
    <discriminator javaType="string" column="gender">
    <!--女生 resultType:指定封装的结果类型;不能缺少。/resultMap-->
    <case value="0" resultType="com.atguigu.mybatis.bean.Employee">
    <association property="dept"
    select="com.atguigu.mybatis.dao.DepartmentMapper.getDeptById"
    column="did">
    </association>
    </case>
    <!--男生 ;如果是男生,把last_name这一列的值赋值给email; -->
    <case value="1" resultType="com.atguigu.mybatis.bean.Employee">
    <id column="id" property="id"/>
    <result column="last_name" property="lastName"/>
    <result column="last_name" property="email"/>
    <result column="gender" property="gender"/>
    </case>
    </discriminator>
    </resultMap>

    3在junit进行测试

    @Test
    public void test05() throws IOException{
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    SqlSession openSession = sqlSessionFactory.openSession();
    try{
    EmployeeMapperPlus mapper = openSession.getMapper(EmployeeMapperPlus.class);
    Employee employee = mapper.getEmpByIdStep(4);
    System.out.println(employee);
    System.out.println(employee.getDept());
    }finally{
    openSession.close();
    }
    }

    结果如下:

    @Test
    public void test05() throws IOException{
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    SqlSession openSession = sqlSessionFactory.openSession();
    try{
    EmployeeMapperPlus mapper = openSession.getMapper(EmployeeMapperPlus.class);
    Employee employee = mapper.getEmpByIdStep(1);
    System.out.println(employee);
    System.out.println(employee.getDept());
    }finally{
    openSession.close();
    }
    }

    结果如下:

  • 相关阅读:
    分组与子报表Active Report6 使用(二)
    网站开发人员应该知道的62件事[转]
    如何恢复SVN中已删除文件或文件夹
    java中的List排序[转]
    [原]ActiveReport6 for net使用(一)
    Windows XP 不用输入密码自动登录
    IE不加载ActiveX控件的解决办法
    winRAR 打包小技巧
    iis负载均衡与文件同步[网摘]
    ASP.net的PDF打印(水晶报表)[摘]
  • 原文地址:https://www.cnblogs.com/zhangzhiqin/p/8549414.html
Copyright © 2011-2022 走看看