现在流行的 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>
<span style="white-space:pre"> </span><!--我们重点关注一下这里
<span style="white-space:pre"> </span>user_name 是个表字段和后面的<span style="font-family: Arial, Helvetica, sans-serif;">#{USER_NAME,jdbcType=VARCHAR} 这里错了应该写成 </span><span style="font-family: Arial, Helvetica, sans-serif;">#{userName,jdbcType=VARCHAR} 应该是属性值 啊找的好苦啊 一下午就这样浪费了 不过还是解决了 ,一开始百度了很多 有的人是属性名写错了,有的是没有set/get 总结到此分享一下 有此情况错误的 一般就这几种了希望可以帮助到初学者</span>
<span style="white-space:pre"> </span>-->
<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>
关于myBatis的问题There is no getter for property named 'USER_NAME' in 'class com.bky.model.实例类'
时间: 2024-08-10 17:20:22