• 自定义映射resultMap


    1、创建两个表 emp & dept

    1. SET FOREIGN_KEY_CHECKS=0;
    2. -- ----------------------------
    3. -- Table structure for emp
    4. -- ----------------------------
    5. DROP TABLE IF EXISTS `emp`;
    6. CREATE TABLE `emp` (
    7. `emp_id` int NOT NULL AUTO_INCREMENT,
    8. `emp_name` varchar(25) DEFAULT NULL,
    9. `age` int DEFAULT NULL,
    10. `gender` char(1) DEFAULT NULL,
    11. `dept_id` int DEFAULT NULL,
    12. PRIMARY KEY (`emp_id`)
    13. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    14. -- ----------------------------
    15. -- Records of emp
    16. -- ----------------------------
    17. INSERT INTO `emp` VALUES ('1', '张三', '20', '男', '1');
    18. INSERT INTO `emp` VALUES ('2', '李四', '21', '女', '2');
    19. INSERT INTO `emp` VALUES ('3', '王五', '22', '女', '3');
    20. INSERT INTO `emp` VALUES ('4', '刘六', '23', '男', '4');
    21. INSERT INTO `emp` VALUES ('5', '林七', '24', '男', '1');
    22. INSERT INTO `emp` VALUES ('6', '吕八', '25', '男', '2');
    1. SET FOREIGN_KEY_CHECKS=0;
    2. -- ----------------------------
    3. -- Table structure for dept
    4. -- ----------------------------
    5. DROP TABLE IF EXISTS `dept`;
    6. CREATE TABLE `dept` (
    7. `dept_id` int NOT NULL AUTO_INCREMENT,
    8. `dept_name` varchar(25) DEFAULT NULL,
    9. PRIMARY KEY (`dept_id`)
    10. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    11. -- ----------------------------
    12. -- Records of dept
    13. -- ----------------------------
    14. INSERT INTO `dept` VALUES ('1', 'A');
    15. INSERT INTO `dept` VALUES ('2', 'B');
    16. INSERT INTO `dept` VALUES ('3', 'C');
    17. INSERT INTO `dept` VALUES ('4', 'D');

    2、属性名和字段名不一致的映射以及解决

    1. Emp实体类的属性
      1. private Integer empId;
      2. private String empName;
      3. private Integer age;
      4. private String gender;
    2. 表字段名:

    emp_idemp_nameagegenderdept_id

         3.映射文件配置:

            4.执行结果发现empId=null,empName=null

    原因:数据库表字段名中的emp_id,emp_name与实体类的属性名empId,empName不一致,由数据库不能映射到实体类属性对应的属性名

    1. 方式一 字段名设置别名

    select emp_id empid from emp where emp_id  =  #{emp_id}

    2. 方式二 下划线映射为驼峰(在配置文件中配置)

    1. "jdbc.properties"/>
    2. "mapUnderscoreToCamelCase" value="true"/>
    3. "lazyLoadingEnabled" value="true" />

    3. 方式三 自定义映射resultMap

    resultMap: 设置自定义的映射关系
    id: 唯一标识–>resultMap=" "
    type: 处理映射关系的实体类的类型
    标签:
    id: 处理主键和实体类中属性的映射关系
    result: 处理普通字段和实体类中属性的映射关系
    column: 设置映射关系中的字段名,必须是sql中的某字段
    property: 设置映射关系中的属性的属性名,必须为实体类中的属性名

    1. "empDeptMapResultMapOne" type="Emp">
    2. "eid" column="eid">
    3. "empName" column="emp_name">
    4. "age" column="age">
    5. "sex" column="sex">
    6. "email" column="email">
    7. "did" property="dept.did">
    8. "dname" property="dept.dname">


     

  • 相关阅读:
    如何在Ubuntu20.04上安装RDP远程
    查询中字段用法
    【测试经验向】提测质量差 + 测试工期压缩,我要怎么办?
    无线Mesh自组网方案,CV5200无线模组应用,支持高清数据远距离传输
    基于 Hive 的 Flutter 文档类型存储
    斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络
    【ArcGIS微课1000例】0107:ArcGIS加载在线历史影像服务WMTS
    JAVA和JVM和JDK和JRE和JAVA SE 是什么? 他们有什么区别? 怎么区分 编程下哪个?
    黑猫带你学Makefile第13篇:Makefile编译问题合集
    PyQt5开发笔记:1.环境搭建与界面美化
  • 原文地址:https://blog.csdn.net/m0_61916154/article/details/127091691