There is no getter for property named ‘user_id‘ in ‘class com.peng.pojo.User‘

报错:

org.mybatis.spring.MyBatisSystemException:

nested exception is org.apache.ibatis.reflection.ReflectionException:

There is no getter for property named ‘user_id’ in ‘class’

也就是搞了两三个小时就搞出来了,轻轻松松。。。。(呜呜呜)

这个是我的测试类:

package test;

import com.peng.pojo.User;
import com.peng.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)//启动spring的容器
@ContextConfiguration(locations = {"classpath*:applicationContext_mapper.xml","classpath*:applicationContext_service.xml"})
public class MyTest {
    @Autowired
    UserService userService;
   
    @Test
    public void testCreateUser(){
        User u = new User("371724200112018188","身份证","121451245784","张三","女","26","工人");
        int c = userService.createUser(u);
        System.out.println(c);
    }

}

这是mapper.java接口类

int createUser(User user);

因为上面的测试类中直接创建User对象传入了,所以其它博主在接口中传参数就不需要了,即不需要写成:

int createUser(
			@Param("user")
			User user);

这个是mapper.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.peng.mapper.UserMapper">

        <!--    完成实体类与表中列名的映射
            private String userId;
            private String cardType;
            private String cardNo;
            private String userName;
            private String userSex;
            private String userAge;
            private String userRole;-->
    <resultMap id="usermap" type="user">
    
<!-- 此处将实体类与数据库中进行了映射,property是实体类中的变量名-->
        <id property="userId" column="user_id"></id>
        <result property="cardType" column="card_type"></result>
        <result property="cardNo" column="card_no"></result>
        <result property="userName" column="user_name"></result>
        <result property="userSex" column="user_sex"></result>
        <result property="userAge" column="user_age"></result>
        <result property="userRole" column="user_role"></result>
    </resultMap>

<!--    定义全部列名-->
    <sql id="allColumns">
        user_id,card_type,card_no,user_name,user_sex,user_age,user_role
    </sql>

<!--    int insert(User user);-->
<!--    #{user_id},#{card_type},#{card_no},#{user_name},#{user_sex},#{user_age},#{user_role}-->
<!--    #{userId},#{cardType},#{cardNo},#{userName},#{userSex},#{userAge},#{userRole}-->
    <insert id="createUser" parameterType="user">

        insert into user values(#{userId},#{cardType},#{cardNo},#{userName},#{userSex},#{userAge},#{userRole})
    </insert>

</mapper>

主要问题就在于

insert into user values(#{userId},#{cardType},#{cardNo},

#{userName},#{userSex},#{userAge},#{userRole})

#{}中的变量名要与实体类中保持一致,不要与数据库中保持一致,但是元素的顺序要与数据库中一一对应,不可改变。(中间我改过但是还是没成功,最后重启了一下成功了,真是个玄学,大家可以重启试一下)
此时就要看上面的

<resultMap id="usermap" type="user">
    
<!-- 此处将实体类与数据库中进行了映射,property是实体类中的变量-->
        <id property="userId" column="user_id"></id>
        <result property="cardType" column="card_type"></result>
        <result property="cardNo" column="card_no"></result>
        <result property="userName" column="user_name"></result>
        <result property="userSex" column="user_sex"></result>
        <result property="userAge" column="user_age"></result>
        <result property="userRole" column="user_role"></result>
    </resultMap>

映射是否正确,顺序尽量与数据库一致,不然很容易搞乱。

这是我的解决方法,只能帮大家到这了,祝你成功!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 这个错误的意思是在com.ruoyi.system.domain.SPointsInfo这个实体类中没有名为'points_type_name'的属性的getter方法。\[3\]根据引用\[2\]的代码,从3.3.0版本到3.5.6版本,BoundSql类的hasAdditionalParameter方法的实现有所不同。在3.3.0版本中,它会调用metaParameters.hasGetter(name)来判断是否有对应的getter方法。而在3.3.1到3.4.1版本中,它会使用PropertyTokenizer来获取indexedName,并检查additionalParameters中是否包含该键。最后,在3.4.6到3.5.6版本中,它会直接使用PropertyTokenizer获取paramName,并检查additionalParameters中是否包含该键。根据这些信息,你可以检查一下你的代码和版本,看看是否有对应的getter方法或者是否使用了正确的版本。 #### 引用[.reference_title] - *1* *2* [There is no getter for property named ‘__frch_item_0‘ in ‘class](https://blog.csdn.net/qq_24054301/article/details/114469803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [There is no getter for property named ‘create_by‘ in ‘class com.one.entity.SysCollegeEntity](https://blog.csdn.net/qq_45913650/article/details/120616205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值