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
发布评论