Mybatis——鉴别器映射

2024-04-04 13:20
文章标签 mybatis 映射 鉴别器

本文主要是介绍Mybatis——鉴别器映射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

鉴别器映射

有时一个单独的数据库查询会返回很多种不同数据类型的结果集。

discriminator鉴别器元素可以用来处理这种情况

数据库表结构 

 

创建实体类、映射接口和映射文件 
实体类employee
package org.example.demo2;import lombok.Data;@Data
public class Employee {private Integer employeeId;private String employeeName;
}
 实体类HourlyEmployee
package org.example.demo2;import lombok.Data;@Data
public class HourlyEmployee extends Employee{private Double rate;
}
 实体类SalaryEmployee
package org.example.demo2;import lombok.Data;@Data
public class SalaryEmployee extends Employee{private Double salary;
}
 EmployeeMapper
package org.example.mapper;import org.example.demo2.Employee;public interface EmployeeMapper {Employee findEmployeeById(Integer employeeId);
}
EmployeeMapper.xml 

使用resultMap的extends属性来映射两个子类的属性

使用discriminator元素映射employee_type字段

discriminator元素常用的两个属性如下:

column:该属性用于设置需要进行鉴别比较值的列

javaType:该属性用于指定列的类型

discriminator元素可以有1个或者多个case子元素,case元素包含三个属性

value:该值用来匹配column指定字段的值

resultMap:当value值和column的值匹配时的结果映射,优先级高于resultType

resultType:当value值和column的值匹配时的结果类型

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mapper.EmployeeMapper"><resultMap id="employeeMap" type="org.example.demo2.Employee"><id property="employeeId" column="employee_id"/><result property="employeeName" column="employee_name"/></resultMap><resultMap id="hourlyMap" type="org.example.demo2.HourlyEmployee" extends="employeeMap"><result property="rate" column="rate"/></resultMap><resultMap id="salaryMap" type="org.example.demo2.SalaryEmployee" extends="employeeMap"><result property="salary" column="salary"/></resultMap><resultMap id="selectMap" type="org.example.demo2.Employee"><discriminator javaType="String" column="employee_type"><case value="HE" resultMap="hourlyMap"></case><case value="SE" resultMap="salaryMap"></case></discriminator></resultMap><select id="findEmployeeById" resultMap="selectMap">select * from t_employee where employee_id = #{employeeId};</select>
</mapper>
 测试类

 

package org.example;import org.apache.ibatis.session.SqlSession;
import org.example.demo.Order;
import org.example.demo.User;
import org.example.demo2.Employee;
import org.example.demo2.SalaryEmployee;
import org.example.mapper.EmployeeMapper;
import org.example.mapper.UserMapper;
import org.example.utils.MybatisUtil;import java.util.List;public class test {public static void main(String[] args) {test test1 = new test();test1.selectAllEmployee();}public void selectAllEmployee() {SqlSession sqlSession = MybatisUtil.getSqlSession();EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);SalaryEmployee salary = (SalaryEmployee) mapper.findEmployeeById(2);System.out.println(salary.getSalary());sqlSession.close();}
}

 

 

 

这篇关于Mybatis——鉴别器映射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/875886

相关文章

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Mybatis提示Tag name expected的问题及解决

《Mybatis提示Tagnameexpected的问题及解决》MyBatis是一个开源的Java持久层框架,用于将Java对象与数据库表进行映射,它提供了一种简单、灵活的方式来访问数据库,同时也... 目录概念说明MyBATis特点发现问题解决问题第一种方式第二种方式问题总结概念说明MyBatis(原名

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类