1. 程式人生 > >關於myBatis的問題There is no getter for property named 'USER_NAME' in 'class com.bky.model.例項類'

關於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

package com.bky.model;

public class B {
    private Long id;

    private String userName;
    
    private String password;

    public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id == null ? null : id;
	}
	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password == null ? null : password.trim();
	}
}


對映器.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.bky.dao.BMapper" >

  <resultMap id="BaseResultMap" type="com.bky.model.B" >
    <id column="ID" property="id" jdbcType="INTEGER" />
    <result column="USER_NAME" property="userName" jdbcType="VARCHAR" />
    <result column="PASSWORD" property="password" jdbcType="VARCHAR" />
  </resultMap>

  <sql id="Base_Column_List" >
    ID, USER_NAME, PASSWORD
  </sql>
  

	<insert id="insertSelective" parameterType="com.bky.model.B" >
	insert into B ( USER_NAME,PASSWORD) values(#{USER_NAME,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR}) 
	</insert> 
	<update id="updateByPrimaryKey" parameterType="com.bky.model.B" > 
	update B set USER_NAME = #{USER_NAME,jdbcType=VARCHAR}, PASSWORD = #{PASSWORD,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER} 
	</update> 
	<select id="getAll" resultMap="BaseResultMap"> SELECT * FROM B </select>
</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  
總結到此分享一下 有此情況錯誤的 一般就這幾種了希望可以幫助到初學者