Mybatis的列名和属性名不一致的处理

用户行为数据分析 User Behavior Data from Taobao for Recommendation 一、提出问题 二、理解数据 数据来源 阿里云天池数据集:(https://tianchi.aliyun.com/dataset/dataDetail?dataId=649) 本文选取的数据集为UserBehavior.csv,共有5242880条数据。数据的具体类别如下表所示: 用户行为种类有四种,如下表所示 对于数据维度的说明如下: 在本文选取的2017年11月25日到2017年12月3日的时间范围内,不重复的用户数量为10202,不重复的商品ID数为412369,不重复的商品类目ID数为5859, 阅读详情

在上一篇的入门示例:

https://blog.youkuaiyun.com/codingToMaster/article/details/104219287

打印结果是:blog is:Blog(id=1, title=My Colourful Garden, authorId=0, state=ACTIVE, featured=true, style=pink)

我们发现打印结果中authorId=0,并不是数据库中的结果??????

原因就是:Bolg实体类中的属性名是:authorId。但是数据库的列名中是:author_id。

实体类属性名和数据库列名不一致?????怎么处理呢?????

有两种处理办法:

第一种:在sql语句中使用别名

<!--针对属性名和列名不一致的情况,第一种解决办法-->
    <select id="selectBlog1" resultType="Blog">
        select
          id,
          title,
          author_id as authorId,
          state,
          featured,
          style
        from blog
        where id = #{id}
    </select>

在mapper中增加接口:

Blog selectBlog1(Integer id);

编写测试用例:

    @Test
    public void testSelectBlog1() {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
        Blog blog = mapper.selectBlog1(1);
        sqlSession.close();
        logger.info("blog is:{}", blog);
    }

运行结果:

 第二中解决办法:使用resultMap

    <resultMap id="blogResultMap" type="Blog">
        <id column="id" property="id"></id>
        <result column="author_id" property="authorId"></result>
    </resultMap>

    <select id="selectBlog2" resultType="Blog" resultMap="blogResultMap">
        select * from Blog where id = #{id}
    </select>

添加接口:

Blog selectBlog2(Integer id);

添加测试用例:

@Test
    public void testSelectBlog2() {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
        Blog blog = mapper.selectBlog2(1);
        sqlSession.close();
        logger.info("blog is:{}", blog);
    }

运行结果:

 

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置) 本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。 阅读详情

相关推荐

基于STM32与ESP8266的MQTT协议实现阿里云物联网平台远程LED控制

本文详细介绍了如何利用STM32单片机与ESP8266 Wi-Fi模块,通过MQTT协议连接阿里云物联网平台,实现远程控制LED灯的完整物联网项目。内容涵盖硬件连接、阿里云平台配置、MQTT协议与AT指令解析、STM32代码实战以及数据解析与调试技巧,为嵌入式开发者提供了一个清晰、实用的物联网入门实践指南。

svm4gardener的博客 791

mybatis字段名和属性名不一致

mybatis字段名和属性名不一致有三种处理方法

qq_42671904的博客 3037

均值场博弈_平均场博弈(mean field game)

The New Big Fish Called Mean-Field Game Theory原文链接http://www.science4all.org/article/mean-field-games/​www.science4all.org主要内容在经典博弈论中,它对附近其他鱼类的行为做出反应。这是非常复杂的,因为不同的鱼类之间会有大量的相互作用。这意味着经典博弈论对应于一长串高度耦合的方程。...

weixin_34773479的博客 3682

三种mybatis表的列名和对象属性名不一致处理方法

三种mybatis表的列名和对象属性名不一致处理方法,resultMap映射解决,使用sql别名,使用@Results注解解决

. 2252

手把手教你学Simulink--移动机器人多轮协同场景实例:基于Simulink的双轮差速PMSM轮毂电机协同驱动仿真

本文介绍了基于Simulink的双轮差速PMSM轮毂电机协同驱动仿真系统。针对移动机器人存在的电机参数不一致、负载分配不均等问题,提出主从同步+力矩补偿的协同控制策略。通过搭建包含运动学模型、PMSM电机模型和矢量控制器的仿真系统,实现了速度同步误差<0.005m/s、轨迹跟踪误差<0.8cm、能耗降低12.5%的优化效果。文章详细阐述了建模步骤、核心算法实现和性能验证,为移动机器人动力系统设计提供了实用参考方案。

MHD0815的博客 133

scratch绘制四个三角形 2024年6月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

​ scratch绘制四个三角形 一、题目要求 2024年6月电子学会图形化编程Scratch等级考试二级真题 1、准备工作 1.保留默认角色小猫; 2.添加背景Stars。 2、功能实现 1 .隐藏角色小猫,设置画笔裙始位置为(0,0),画笔颜色为黄色,画笔的粗细为5; 2. 点击绿旗,绘制如下图所示图形,三角形的边长为50。 二、案例分析 1、角色分析 角色:小猫 2、背景分析 背景:Stars背景 3、前期准备 1. 保留默认的小猫不变 ​

青少年编程学习指导 1717

MyBatis字段名和属性名不一样的解决方案

这样设置之后,MyBatis就会将数据库中的下划线分隔的字段名转换为Java中的驼峰式命名。例如,如果数据库中的字段名为。开启驼峰匹配后,会将_自动映射为驼峰,如emp_name将会被映射为empName.如上面的SQL语句将emp_name取别名为empName对应实体类的属性名。在Spring Boot中,使用MyBatis时,可以通过在。resultMap:设置自定义映射。,则在Java中将会被映射为。

· 1205

AMBA-CHI协议详解(五)

 每个事务由许多不同的packets组成,这些数据包通过互连(interconnect)传输。packets内的一组ID域段用于提供有关包的附加信息。

Crazzy_M的博客 1961

Mybatis实例参考04-列名与属性名不一致的解决方法

mybatis配置:mybatis-config.xml。mapper配置:PersonMapper.xml。spring配置:beans.xml。

qq_34378496的博客 725

汽车IVI中控开发入门及进阶(三):概述

开发板的作用当然是为了解决一些应用而设计的,主体是板,终极目的是应用,中间过程则是开发,是基于板的开发。可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到芯片上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。所以这些实现都是建构在汽车中控开发板的解决方案上的,最核心的当然就是一颗中控主控芯片,这是一颗国产中控双核DA主控芯片,AECQ100认证的车规级芯片。Q:uboot的作用是什么?

码农17年的博客 1407

如何提高电路的抗干扰能力

本内容详细介绍了电源传导干扰处理,包括滤波、Feedthrough电容器、磁环、磁珠、屏蔽的使用与选型,EMC电磁兼容测试项目简介与要求,单片机与电源抗干扰处理等。

让你爱上电路设计 8600

MyBatis字段名与属性名不一致的三种情况

第一种:为mapper.xml的sql语句中为字段起别名,来保持字段名与属性名一致。 <!--List<User> getUserByName--> <select id="getUserByName" resultType="User"> select eid,emp_name empName,age,sex from user where emp_name = #{empName} </select> 第二种:..

m0_60336885的博客 1501

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mybatis注解模式,mybatis日志文件,把数据源信息提取到属性文件中,为实体类起别名, mybatis处理多个参数,xml特殊字符,获取主键递增的值,模糊查询,列名和属性名不一致的问题

mybatis注解模式,mybatis日志文件,把数据源信息提取到属性文件中,为实体类起别名, mybatis处理多个参数,xml特殊字符,获取主键递增的值,模糊查询,列名和属性名不一致的问题

weixin_51635918的博客 942

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Mybatis中数据库列名与实体类属性名不一致的处理方式

一般来说实体类的属性在设计时应该与数据库列名保持一致,便于之后的代码编写。但是总有些特殊情况导致属性名与数据库列名不一致,那么这里有两种处理方式。 这里有个测试的例子 数据库: 实体类: 可以看到属性与数据库列名不一致 方法一:在sql语句中起别名 用查询所有举例子 在配置文件中配置sql语句 这里测试类编写就省略了 运行结果 方法二:使用resultMap 标签 在配置文件中进行配置 result对应数据库的列名 property对应实体类的属性 resul

qq_44893422的博客 822

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MyBatis学习:使用resultMap或在SQL语句中给列起别名处理查询结果中列名和JAVA对象属性名不一致的问题

目前我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,明晰了在Web项目中的普遍编码层次,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。...

weixin_46281472的博客 2323

Mybatis中 domain对象的属性名和数据库中的列名不一致的解决办法

方法一、起别名 比如我有一个domain对象中的一个属性叫userName 另一个属性叫 userID 而数据库的列名分别是username和id 当我们在Myabtis中查询这两个属性的值 我们会发现 username的值是可以正常得到的,而userId则为null 原因 因为我使用的数据库是mysql 在windows中是不区分大小写的 而在linux中区分大小写 因此userName可以封装进去 但id属性则不同了 因此我们在Mybatis中的sql语句应该写为 select id as userid

weixin_45724872的博客 918

4、Mybatis查询语句列名和属性名不一致的解决方法

Mybatis查询语句列名和属性名不一致的解决方法 方法一 ResultMap //resultMap定义映射关系 List<User> selectAllUser(); <!--使用resultMap 1)先定义resultMap id:自定义的名称,表示你定义的这个resultMap type:java类型的全限定名称 2)在select标签,使用resultMap来引用1定义 --&gt

m0_53294821的博客 337

关于MyBatis中javabean属性名和数据库列名的匹配规则

在MyBatis中,一般javabean的属性名跟数据库的列名完全一致,或者开启驼峰命名法后保持名称的对应,但是我在替换了javabean中属性的名称后,发现MyBatis还是能查询出来值并且把值填入这个属性。 目前我的数据库中有这样一张表tbl_employee: 以及对应的javabean public class Employee { private Integer id; private String lastName; private String email; private St

qq_37040929的博客 997

MyBatis 基础学习与优化技巧解析

MyBatis 是一款持久层框架,专注于数据库操作,极大地简化了 JDBC 代码的编写。它通过配置文件和映射文件,将 SQL 语句与 Java 代码解耦,使得代码结构更加清晰,易于维护。除了传统的映射文件方式,MyBatis 还支持注解模式编写 SQL 语句。这种方式在某些场景下更加简洁直观,特别适合单表的简单操作。在向数据库插入数据时,如果表的主键是自增长的,我们可能需要获取插入后生成的主键值。

weixin_62192155的博客 2292

六、封装 MyBatis 输出结果resultType、resultMap 以及 数据库表中列名和返回对象属性名不一致的2种解决方案(详解)

1.1 resultType resultType: 执行 sql 得到 ResultSet 转换的类型,使用类型的完全限定名或别名。 注意:如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身。resultType 和 resultMap,不能同时使用。 A、简单类型 接口方法: int countStudent(); mapper 文件: <!--resultType简单类型--> <select id="countStudent" resultType="int

zep 1630

列名与属性名不一致

【概述】 实际编写代码时,常会出现列名和对象的属性名不一致的情况.MyBatis通过ResultMap提供了解决方案。 【表结构】 【实体类】 publicclassUser { privateintid; privateString account; privateString name; privateString password; priva...

weixin_34409703的博客 281

Mybatis的优化,各种方法

注解模式;添加mybatis的sql日志;为实体类起别名;把数据源信息提取到属性文件中;mybatis处理多个参数;xml出现特殊字符;获取主键递增的值;模糊查询; 解决列名和属性名不一致的问题

weixin_64574904的博客 1388

SSM_Mybatis_Day01(快速入门、映射文件概述、核心配置文件概述、相应API、代理开发方式、映射文件深入、数据类型的映射、列名和属性名不一致的时候的处理)

SSM_Mybatis_Day01(快速入门、映射文件概述、核心配置文件概述、相应API、代理开发方式、映射文件深入、数据类型的映射、列名和属性名不一致的时候的处理) 1. Mybatis mybatis是一个ORM框架,持久化框架。 持久化 就是将数据永久的保存在一定的存储设备上。 Mybatis就是jdbc的升级版的框架; 框架:就是一个可以进行数据的jdbc操作的一个大的结构,半成品。 1.1原始jdbc操作(查询数据) 1.2原始jdbc操作(插入数据) 1.3 原始jdbc操作的分析 原始jd

weixin_47469183的博客 336

关于mybaties使用2

在mybatis.xml中,使用标签,放在environment上,name的参数为实体类所在的包的路径,不用写类名。此时也有另一种传参数为对象时,在声明一个类用来存贮需要的值,在整个过程中只是用来传参,只要注解绑定的一致就行。换一种拼接,通过使用${}进行拼接,成功,但是在sql中拼接的值会引起sql注入的安全问题不使用。通过前端输入时加上%%,如下图,成功查找到,但是在实际运用中用户不会输入去%%,这种不符合实际。此时需要使用转义字符。

m0_64520958的博客 1310

Java MyBatis框架:(十)解决列名和属性名不一致问题

解决列名和属性名不一致问题1.列别名2.使用< resultMap > 如果查询时使用 resultType 属性, 表示采用 MyBatis 的 Auto-Mapping(自动映射)机制, 即相同的列名和属性名会自动匹配. 因此, 当数据库表的列名和类的属性名不一致时, 会导致查不到数据. 解决该问题可以有两种方式: 1.列别名 查询时, 可以通过列别名的方式将列名和属性名保持一致, 继续使用自动映射, 从而解决该问题. 但是较为麻烦 <select id="selAll" result

地球村 641

Mybatis解决实体类中的属性名称和查询语句中的列名不一致无法访问数据的问题

当我们定义接受MYSQL数据的User类中的常量名和MYSQL中的列名不一致时,我们无法通过SQL语句来访问到MYSQL数据,有以下两种解决方案。 1、给属性名起别名 别名即为我们MYSQL中对应属性的列名。 <!-- 配置查询所有操作 --> <select id="findAll" resultType="com.itheima.domain.User"> select id as userId,username as userName,birthday as userB

qq_44660367的博客 409
上一篇: mybatis学习一之入门示例
下一篇: mybatis学习三之模糊查询的几种使用方法
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值