• MyBatis处理表字段和实体类属性名不一致的情况及多对一映射关系的处理


    目录

    一、处理表字段和实体类属性名不一致的情况

    方式一:给字段名取别名

    方式二:在核心配置文件中配置驼峰映射

    方式三:在映射文件中使用标签自定义映射

    二、多对一映射关系的处理

    方式一:使用级联

    方式二:使用标签

    方式三:使用分步查询


    一、处理表字段和实体类属性名不一致的情况

    方式一:给字段名取别名

    ● 如果表中字段名和实体类属性名不一致,可以在SQL语句中给字段名取别名
    给字段取得别名必须和实体类属性名一致

    方式二:在核心配置文件中配置驼峰映射

    ● 使用前提:表字段符合Mysql命名规范(使用下划线_分割单词),而实体类属性符合驼峰命
    名规范

    ● 使用方式:

    1、在核心配置文件中使用标签,在该标签下使用子标签来配置

    2、给子标签设置name属性值为mapUnderscoreToCamelCase,value属性值

    为true

    ● 范例:

    1. "mapUnderscoreToCamelCase" value="true" />

    ● 在核心配置文件使用了如上配置后,在SQL语句中可以使用表的字段名而不用考虑表字段名和
    实体类属性名不一致的情况

    方式三:在映射文件中使用标签自定义映射

    标签含有id属性和type属性,其中id属性是设置当前自定义映射的标识,type属
    性是映射的实体类

    标签下含有的子标签以及功能

    1、标签:设置主键字段的映射关系,使用column属性设置映射关系中表的字段名,
    使用property属性设置映射关系中实体类的属性名

    2、标签:设置普通字段的映射关系,使用column属性设置映射关系中表的字段
    名,使用property属性设置映射关系中实体类的属性名

    ● 范例:

    1. "empResultMap" type="Emp">
    2. "emp_id" property="empId">
    3. "emp_name" property="empName">
    4. "age" property="age">
    5. "gender" property="gender">

    注意:SQL语句所在标签中的resultMap属性值必须是自定义映射的id

    二、多对一映射关系的处理

    这里多对一是指实体类中某个属性是以表中多个字段为属性构成的实体类,如员工类的部门属性,部门属性的类型是部门类,这个部门类有部门id,部门名称

    方式一:使用级联

    配置:

    1. "getEmpAndDeptByEmpIdResultMap" type="Emp">
    2. "emp_id" property="empId">
    3. "emp_name" property="empName">
    4. "age" property="age">
    5. "gender" property="gender">
    6. "dept_id" property="dept.deptId">
    7. "dept_name" property="dept.deptName">

    方式二:使用<association>标签

    配置:

    1. "getEmpAndDeptByEmpIdResultMap" type="Emp">
    2. "emp_id" property="empId">
    3. "emp_name" property="empName">
    4. "age" property="age">
    5. "gender" property="gender">
    6. "dept" javaType="Dept">
    7. "dept_id" property="deptId">
    8. "dept_name" property="deptName">

    注意:association标签中property属性是指映射实体类中属性的名称,javaType是它的类型,而association标签下的id标签和result标签中的property属性是指javaType指定的类中的属性名称,column属性指表中的字段名

    方式三:使用分步查询

    配置:

    查询员工信息:

    1. "getEmpAndDeptByEmpIdResultMap" type="Emp">
    2. "emp_id" property="empId">
    3. "emp_name" property="empName">
    4. "age" property="age">
    5. "gender" property="gender">
    6. property="dept"
    7. select="com.liaoxiangqian.mapper.DeptMapper.getDeptByDeptId"
    8. column="dept_id">

    根据员工的部门id查询部门信息:

    1. "getDeptByDeptIdResultMap" type="Dept">
    2. "dept_id" property="deptId">
    3. "dept_name" property="deptName">

     

  • 相关阅读:
    webpack自定义loader
    AutoDev 自定义 Agent:快速接入内部 AI Agent,构建 IDE 即 AI 辅助研发中心
    Maven 配置指南
    详解python的集合
    如何选择现代存储产品?这份指南供你参考!
    第一百七十五回 如何创建放射形状渐变背景
    被装超市管理系统-智被装DW-S305系统组成项目背景
    注意力机制 ECA-Net 学习记录
    electron vue 模仿qq登录界面
    简单聊聊羊了个羊
  • 原文地址:https://blog.csdn.net/m0_61961937/article/details/127043137