• 关于myBatis的问题There is no getter for property named 'USER_NAME' in 'class com.bky.model.实例类'


    现在流行的 ssm(spring + struts2 + myBatis)  持久层的mybatis是需要配置映射器的,找了个demo连接的数据库MySQL 于是就修改了一下弄成了连接Oracle

    一切就绪之后跑起来 执行插入操作的时候问题来了 ,报了一个这个错我的表是B 字段是id ,user_name ,password  实例类的字段是 id , userName,password,

    这里有个user_name 和userName 搞了一下午弄的头疼,后来发现了猫腻,

    There is no getter for property named 'USER_NAME' in 'class com.bky.model.B'

    代码:

    实体类 B

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. package com.bky.model;  
    2.   
    3. public class B {  
    4.     private Long id;  
    5.   
    6.     private String userName;  
    7.       
    8.     private String password;  
    9.   
    10.     public Long getId() {  
    11.         return id;  
    12.     }  
    13.     public void setId(Long id) {  
    14.         this.id = id == null ? null : id;  
    15.     }  
    16.     public String getUserName() {  
    17.         return userName;  
    18.     }  
    19.   
    20.     public void setUserName(String userName) {  
    21.         this.userName = userName;  
    22.     }  
    23.   
    24.     public String getPassword() {  
    25.         return password;  
    26.     }  
    27.   
    28.     public void setPassword(String password) {  
    29.         this.password = password == null ? null : password.trim();  
    30.     }  
    31. }  



    映射器.xml

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
    3.   
    4. <mapper namespace="com.bky.dao.BMapper" >  
    5.   
    6.   <resultMap id="BaseResultMap" type="com.bky.model.B" >  
    7.     <id column="ID" property="id" jdbcType="INTEGER" />  
    8.     <result column="USER_NAME" property="userName" jdbcType="VARCHAR" />  
    9.     <result column="PASSWORD" property="password" jdbcType="VARCHAR" />  
    10.   </resultMap>  
    11.   
    12.   <sql id="Base_Column_List" >  
    13.     ID, USER_NAME, PASSWORD  
    14.   </sql>  
    15.     
    16.   
    17.     <insert id="insertSelective" parameterType="com.bky.model.B" >  
    18.     insert into B ( USER_NAME,PASSWORD) values(#{USER_NAME,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR})   
    19.     </insert>   
    20.     <update id="updateByPrimaryKey" parameterType="com.bky.model.B" >   
    21.     update B set USER_NAME = #{USER_NAME,jdbcType=VARCHAR}, PASSWORD = #{PASSWORD,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER}   
    22.     </update>   
    23.     <select id="getAll" resultMap="BaseResultMap"> SELECT * FROM B </select>  
    24. </mapper>  

    错误写法如下

    <insert id="insertSelective" parameterType="com.bky.model.B" >
    insert into B ( USER_NAME,PASSWORD) values(#{USER_NAME,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR}) 
    </insert> 

    我们重点关注一下这里user_name 是个表字段和
    后面的#{USER_NAME,jdbcType=VARCHAR} 这里错了,应该
    写成#{userName,jdbcType=VARCHAR} 应该是属性值 
    啊找的好苦啊 一下午就这样浪费了 不过还是解决了 ,
    一开始百度了很多 有的人是属性名写错了,有的是没有set/get  
    总结到此分享一下 有此情况错误的 一般就这几种了希望可以帮助到初学者

  • 相关阅读:
    正在与拖延症病魔抗争中
    Words For Today [20110724]
    短期目标[Till 20110805]
    Words For Today [20110804]
    Words For Today [20110731]
    Words For Today [20110801]
    Words For Today [20110723]
    《定位》一书
    马云的最近的话柱着拐杖跳高
    创业的人格
  • 原文地址:https://www.cnblogs.com/soundcode/p/6525268.html
Copyright © 2020-2023  润新知