mybatis 当表字段与实体类字段不一样的时候的解决方案

2023-11-09

参考文档:https://www.cnblogs.com/nananana/p/8597466.html

https://www.cnblogs.com/wangjunwei/p/11334718.html

数据库的字段:

对应的实体类:

 

 

方案一:

在XML映射文件中使用的resultMap,优点:可以被重复使用。

<resultMap id="BaseResultMap" type="com.dao.entity.UserInfoEntity">
    <!-- 用id属性来映射主键字段 -->
    <id column="_id" jdbcType="VARCHAR" property="id" />
    <!-- 用result属性来映射非主键字段 -->
    <result column="name" jdbcType="VARCHAR" property="name" />
</resultMap>

通过里面的id标签和result标签来建立映射关系,由property和column分别指定实体类属性和数据表的列名。

方案二:

让字段的别名与实体类的属性名相同,优点:操作简单,容易理解。缺点:当这样的语句出现的次数过多的时候,到时冗余代码增多,这些别名不能重用。

<select id="selectAll" resultType="com.dao.entity.UserInfoEntity">
    select _id id, name, age from user
</select>

 

@Select("select _id id, name, age from user")
List<UserInfoEntity> selectAll();

 

方案三:

使用Map集合封装结果集,在MyBatis中字段名作为key,字段所对应的数据作为value。优点:可以在多表操作时使用。

<select id="selectUserAll" resultType="java.util.Map">
    select * from user
</select>

方案四:

使用注解@Results和@Result

这两个注解与XML文件中的标签相对应: @Results对应resultMap @Result对应result

@Select("select * from user where name = #{name}")
@Results({
  @Result(property = "id", column = "_id"),
  @Result(property = "name", column = "name")
})
UserInfoEntity getUserByName(@Param("name") String name);

复制代码

@Select("select * from user where name = #{name}")
@Results(id = "userMap", value = {
  @Result(property = "id", column = "_id"),
  @Result(property = "name", column = "name")
})
UserInfoEntity getUserByName(@Param("name") String name);

@Select("SELECT * FROM user")
@ResultMap("userMap") //公用@Results
List<UserInfoEntity> findUserAll();

复制代码

方案五:

通过配置属性来完成映射,Mybatis给我们提供了一种映射方式,如果属性的命名是遵从驼峰命名法的,数据列名遵从下划线命名,  那么可以使用这种方式,类似如下:

userName对应user_name;

userId对应user_id;

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
Configuration configuration = new Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(configuration);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis 当表字段与实体类字段不一样的时候的解决方案 的相关文章

随机推荐

  • 银行业法律法规与综合能力 第五章 银行监管与自律 10%

    第五章 银行监管与自律 考点1 银行监管体制 考点2 银行自律与市场约束 考点3 职业操守与行为准则 考点4 清廉金融 考点5 银行业消费者杈益保护 考点1 银行监管体制 一 银行监管起源与演变 1 英国颁布的 反泡沫公司法 标志着世界金融
  • 小程序---云函数npm install报错

    问题 云函数右键菜单 在外部终端窗口中打开 npm install报错 解决方法 使用cnpm install 安装依赖
  • error:03000086:digital envelope routines::initialization error

    项目背景 前端vue项目启动突然报错error 03000086 digital envelope routines initialization error 我用的开发工具是vscode node版本是v18 17 0 前端项目版本如下
  • redis安装、配置、启动

    一 redis默认安装位置 usr local bin redis benchmark 性能测试工具 可以在自己本子运行 看看自己本子性能如何 服务启动起来后执行redis check aof 修复有问题的AOF文件redis check
  • mac安装VMware Fusion及虚拟Windows注意事项

    mac安装VMware Fusion及虚拟Windows注意事项 文章目录 mac安装VMware Fusion及虚拟Windows注意事项 1 前言及注意事项 2 VMWare Fusion下载及安装 3 安装虚拟Windows 4 Vi
  • 代码覆盖率

    在做单元测试时 代码覆盖率常常被拿来作为衡量测试好坏的指标 甚至 用代码覆盖率来考核测试任务完成情况 比如 代码覆盖率必须达到80 或 90 于是乎 测试人员费尽心思设计案例覆盖代码 用代码覆盖率来衡量 有利也有有弊 本文我们就代码覆盖率展
  • viewPager + ConstraintLayout 自适应高度

    在 ConstraintLayout 约束布局 中 我们发现viewPager除了设置固定的尺寸外 要不就是全屏 这很不符合我们的需求 改造下 layout中
  • Pandas常用统计数据方法

    import pandas as pd 1 准备数据 假设有 5 个人 分别参加了 4 门课程 获得了对应的分数 同时这个 5 个人分别负责的项目个数 在 Project num 列中显示 data name pd Series Alice
  • Linux 用户管理与文件权限

    Linux 是一个多用户系统 它允许多个用户同时登陆主机 并为他们分配不同的资源和工作环境进行使用 当然 不同的用户都有文件的私有需求 所以设置不同用户文件的权限管理十分重要 01 用户与用户组 Linux 中一般将文件访问权限的身份分为三
  • 深度神经网络(使用CNN,NN,RNN,与KNN,SVM)

    深度神经网络 实验目的 了解神经网络结构 NN CNN RNN 使用框架运行神经网络 查看并对比神经网络学习的效果 不断调整神经网络的参数 逐步提升学习效果 以CNN为例 对比神经网络与一般机器算法的区别 目录 pytorch的安装 数据预
  • 李宏毅 机器学习 2016 秋:5、Classification:Probabilistic Generative Model

    文章目录 五 Classification Probabilistic Generative Model 五 Classification Probabilistic Generative Model 接下来我们要来进入新的主题 我们要来讲
  • gprmax3.0安装与三维建模

    最近在学习gprmax的使用 国内网上有关gprmax的经验帖子有些陈旧 分享一些自己最新的软件安装配置以及实际三维建模的经验 希望能帮助到需要使用这款软件的朋友 目录 一 gprmax3 0下载与安装 1 Anaconda Minicon
  • 机器学习毕业设计 Python新闻算法研究与实现

    文章目录 0 前言 简介 本文章博主将介绍 参与及比较算法 先说结论 实现过程 数据爬取 数据预处理 CNN文本分类 其他分类方法更新中 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕
  • windows server 2016下FTP服务搭建教程图文详解

    一 什么是FTP FTP File Transfer Protocol 是TCP IP网络上两台计算机传送文件的协议 使得主机间可以共享文件 接下来我给大家分享快速搭建FTP服务器的方法 二 安装FTP服务器 1 进入服务器系统打开 服务器
  • MyBatis Generator在eclipse中的应用

    mybatis generator这个插件不知道用过的人有多少 这个插件是用来为数据库的表逆向生成pojo类和dao文件以及sql语句的mapper文件的 之前的公司使用IDEA做开发 用的就是这个 现在使用eclipse还是做个记录吧 免
  • 微软服务器2016认证的考试方式,微软认证考试的几种形式

    就目前的情况来看 微软认证考试共有三种考试形式即最早的固定 道试题方式 以下简称 变长度的自适应考试 以下简称 以及其固定 道试题方式 以下简称 这几种方式的发展顺序为从 到 再到 其中不排除今后有可能直接从 到 但至少到现在为止还没看到这
  • casiafaceV5数据集的人脸识别

    1 Casia FaceV5数据集描述 包含500个人的照片 每个人5张 共2500张照片 照片size height 480 width 640 需要自行划分训练集测试集 数据集下载 2 做识别训练中存在的问题 由于每一类的样本只有5张照
  • 2.3CUDA矩阵乘法

    CPU 矩阵乘法 能相乘的两个矩阵 必须满足一个矩阵的行数和第二个矩阵的列数相同 A N P B P M C N M 其中P是行数 N是列数 从宽高的角度来说 即 A的宽度和B的高度是相同的 C矩阵 ha wb 其中C i j A矩阵中的i
  • 量化策略——准备4 python量化因子测算&绘图

    文章目录 因子测算框架 1 预处理股票数据 2 指标测算 3 测算结果整理 4 结果绘图 量化因子的测算通常都是模拟交易 计算各种指标 其中 测算需要用到的第三方库 numpy pandas talib 绘图需要用到的第三方库 matplo
  • mybatis 当表字段与实体类字段不一样的时候的解决方案

    参考文档 https www cnblogs com nananana p 8597466 html https www cnblogs com wangjunwei p 11334718 html 数据库的字段 对应的实体类 方案一 在X