現在流行的 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
總結到此分享一下 有此情況錯誤的 一般就這幾種了希望可以幫助到初學者