当前位置: 首页 > article >正文

Mybatis中ORB映射

目录

1 MyBatis自动ORM失效

2 方案一:列的别名

3 方案二:结果映射(ResultMap - 查询结果的封装规则)

总结


 

1 MyBatis自动ORM失效

MyBatis只能自动维护库表”列名“与”属性名“相同时的一一对应关系,二者不同时,无法自动ORM。

2 方案一:列的别名

在SQL中使用 as 为查询字段添加列别名,以匹配属性名。

通过取别名,让列的别名和实体类属性名一致即可!

<mapper namespace="com.qf.mapper.ManagerMapper">
    <select id="findAll" resultType="Manager">
        select 
            mgr_id as id,
            mgr_name as name,
            mgr_pwd as password
        from t_managers
    </select>
</mapper>

 

3 方案二:结果映射(ResultMap - 查询结果的封装规则)

通过< resultMap id="" type="" >映射,匹配列名与属性名。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qf.mapper.ManagerMapper">
    <!--
        resultMap标签来完成结果映射的(手动实现映射)
        id是当前这个标签的标识
        type最终要映射(封装)那个对象的类型
    -->
    <resultMap id="findAllResultMap" type="com.qf.model.Manager">
        <!-- 手动指定哪个列封装到对象的哪个属性 -->
        <!-- id列封装使用id标签,其他列使用result标签 -->
        <!-- column是下方sql语句中的列名,property是封装的对象的属性名 -->
        <id column="mgr_id" property="id"/>
        <result column="mgr_name" property="name"/>
        <result column="mgr_pwd" property="password"/>
    </resultMap>
    <select id="findAll" resultMap="findAllResultMap">
        <!-- 因为列与封装的类的属性不一致,导致自动ORM失效 -->
        <!-- 需要手动映射,设置resultMap标签,在select标签中不再使用resultType
            而是使用resultMap且指定另外一个<resultMap>的id
         -->
        select * from t_managers
    </select>
</mapper>

总结

  • 当数据库的列和实体类属性不一致时,可以通过手动映射来完成

  • 手动关联映射,就不再使用resultType,而是使用resultMap,其中写resultMap标签的id


http://www.kler.cn/a/300908.html

相关文章:

  • 基于Java的百度AOI数据解析与转换的实现方法
  • 单片机存储器和C程序编译过程
  • 使用Newtonsoft.Json插件,打包至Windows平台显示不支持
  • 计算机网络 (44)电子邮件
  • 人工智能任务19-基于BERT、ELMO模型对诈骗信息文本进行识别与应用
  • Mysql--运维篇--备份和恢复(逻辑备份,mysqldump,物理备份,热备份,温备份,冷备份,二进制文件备份和恢复等)
  • Servlet编程第一步:从零构建Hello World应用,详细步骤+图解
  • 本地部署Llama 3.1大模型
  • 价值流:从理论框架到实践落地的系统化指南
  • 快速解决git am冲突
  • 【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十九)
  • 一维数组 list 呢 ,怎么转换成 (批次 句子长度 特征值 )三维向量 python pytorch lstm 编程 人工智能
  • OCR在线识别网站现已上线!
  • Nuxt Kit 的使用指南:从加载到构建
  • Windows下Python和PyCharm的应用(三)__Numpy与矩阵
  • 插入、希尔、冒泡、选择排序
  • EG边缘计算网关连接阿里云物联网平台(MQTT协议)
  • 22_图论中的高级数据结构
  • 最牛的AI产品经理书!读完跪了!
  • HTML中的javascript基本用法及综合实例
  • GaussDB关键技术原理:高弹性(四)
  • 【LeetCode】2309:兼具大小写的最好英文字母
  • Java 用 com.alibaba.druid.pool.DruidDataSource 链接db2数据库示例
  • Kubernetes精讲之控制器的使用
  • 中间件解析了漏洞【IIS Nginx Apache】
  • Request Response