XML文件中,Mybatis或MybatisPlus查询出的Sql结果未映射到对应得实体类上

XML文件中,Mybatis或MybatisPlus查询出的Sql结果未映射到对应得实体类上

一.问题描述:

使用mybatisplus查询表数据的时候,确定sql语句没问题,放在navicat上可以正常查询出结果,但是使用实体类接收的时候,发现对应的实体类字段都是null。

二.表结构:

字段类型注释
idbigintid
user_namevarchar名字
user_ageint年龄

三.错误的写法:

 <resultMap id="userVo" type="com.xx.xx.xx.User">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="user_name" jdbcType="VARCHAR" property="userName" />
       <result column="user_age " jdbcType="INTEGER" property="userAge" />
    </resultMap>
<select id="findList" resultMap="userVo">
        select
        a.id as id,
        a.user_name as userName,
        a.user_age as userAge
        from user a
    </select>

三.原因:

1如果select标签的属性选择resultMap,那么sql语句中就不用写"as xx" 别名了。

2如果select标签的属性选择resultType,mybatisplus会自动映射,指向具体的实体类。这时需要满足下面三个条件:
①表中的字段要么和实体类字段一致。

②如果表中字段带下划线,实体类中对应的字段不想带下划线,就要满足下划线转驼峰的方式,例如,表中字段product_url,实体类中的字段,要写成productUrl。

③yml文件中,mybatisplus的配置参数,mapUnderscoreToCamelCase参数,要改为true。如下图所示:
在这里插入图片描述

四.解决:

第一种方案:
 <resultMap id="userVo" type="com.xx.xx.xx.User">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="user_name" jdbcType="VARCHAR" property="userName" />
       <result column="user_age " jdbcType="INTEGER" property="userAge" />
    </resultMap>
<select id="findList" resultMap="userVo">
        select
        a.id,
        a.user_name,
        a.user_age
        from user a
    </select>
第二种方案:
<select id="findList" resultType="com.xx.xx.xx.User">
        select
        a.id as id,
        a.user_name as userName,
        a.user_age as userAge
        from user a
    </select>

《肖申克的救赎》

生命可以归结为一种简单的选择:要么忙于生存,要么赶着去死。

懦怯囚禁人的灵魂,希望可以感受自由。强者自救,圣者渡人。

希望是件美丽的东西,也许是最好的东西。美好的东西是永远不会死的。

每个人都是自己的上帝。如果你自己都放弃自己了,还有谁会救你?

《熔炉》

我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。

现实如水母,看似美好无害实质总是致命伤人。

我们来到世界上,都是孤独的旅行,即使身边有人相伴,最终也会各奔东西!

世界上最美丽最珍贵的,反而是听不见且看不清的,只有用心才能感受得到。

《教父》

人可以不断犯错,但绝不能犯要命的错。

不要憎恨你的敌人,那会影响你的判断力。

人并非生来就伟大,而是越活越伟大。

《活着》

人是为了活着本身而活着,而不是为了活着之外的任何事物而活着。

以笑的方式哭,在死亡的伴随下活着。

没有什么比时间更具有说服力了,因为时间无需通知我们就可以改变一切。

你的命是爹娘给的,你不要命了也得先去问问他们。

《我不是药神》

世界上只有一种病,穷病,这种病你没法治,你也治不过来。

人间最高贵的是善良,是对生命的致敬。

《指环王》

把手握紧,里面什么也没有;把手放开,你得到的是一切。

我宁愿和你共度凡人短暂的一生,也不愿一个人看尽这世界的沧海桑田。

20.幸福的家庭都是相似的,不幸的家庭各有各的不幸。

或许有一天,人类变得萎缩懦弱,舍弃朋友,断绝友谊,但今天决不会这样。
《饮食男女》

22.人生不能像做菜,把所有的材料都准备好了才下锅。

什么叫做“可惜”啊,要心中有个“惜”字儿,才知道可惜。

其实一家人,住在一个屋檐下,照样可以各过各的日子,可是从心里产生的那种顾忌,才是一个家之所以为家的意义。

《让子弹飞》

世界上本没有路,有了腿便有了路。

如果你活着,早晚都会死;如果你死了,你就永远活着。

赚钱嘛,不寒碜

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个示例的MyBatis SQL映射XML文件: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.dao.UserDao"> <resultMap id="userResultMap" type="com.example.entity.User"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> </resultMap> <select id="getUserById" resultMap="userResultMap"> SELECT * FROM user WHERE id = #{id} </select> <insert id="insertUser" parameterType="com.example.entity.User"> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <update id="updateUser" parameterType="com.example.entity.User"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUserById" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` 其,`<mapper>` 标签的 `namespace` 属性指定了该 SQL 映射文件对应的 DAO 接口的全限定名。 `<resultMap>` 标签定义了查询结果到实体类映射关系。`<id>` 标签定义了主键列的映射关系,`<result>` 标签定义了其它列的映射关系。 `<select>`、`<insert>`、`<update>`、`<delete>` 标签分别对应 SQL查询、插入、更新和删除操作。其,`id` 属性指定了该操作的唯一标识符,`parameterType` 属性指定了该操作的输入参数类型,`resultMap` 属性指定了该操作的输结果映射关系。 在查询操作,可以使用 `#{}` 占位符来表示输入参数,MyBatis 会自动将其替换为对应的实际值。例如,`SELECT * FROM user WHERE id = #{id}` 的 `#{id}` 将被替换为传入的 `id` 参数的实际值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘德华一不小心就打代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值