There is no getter for property named ‘user

编程入门 行业动态 更新时间:2024-10-10 09:24:15

There is no getter for <a href=https://www.elefans.com/category/jswz/34/1770251.html style=property named ‘user"/>

There is no getter for property named ‘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 {@AutowiredUserService userService;@Testpublic 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 mapperPUBLIC "-//mybatis//DTD Mapper 3.0//EN"".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>

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

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

更多推荐

There is no getter for property named ‘user

本文发布于:2024-03-05 09:39:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1711942.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:property   getter   user   named

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!