Ibatis中的一个“There is no READABLE property named 'uId' in class 'userinfoPo”错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ibatis中的一个“There is no READABLE property named 'uId' in class 'userinfoPo”错误相关的知识,希望对你有一定的参考价值。
我在ibatis中有如下配置:
这是一个PO:
/**
* 用户基本信息
* @author Rao
* @Date 2009-10-04
* @Table (mwweb.userinfo)
*/
public class UserinfoPo
private String uId; //用户Id
private String uName; //用户登录名称
private String uNickname; //用户昵称
private String uPass; //用户密码
private String uEmail; //用户Email
private String uBirth; //用户出生日期
private int uSex; //用户性别(1男,2女)
private String uAddress; //用户地址
public String getUName()
return uName;
public void setUName(String name)
uName = name;
public String getUPass()
return uPass;
public void setUPass(String pass)
uPass = pass;
public String getUEmail()
return uEmail;
public void setUEmail(String email)
uEmail = email;
public String getUBirth()
return uBirth;
public void setUBirth(String birth)
uBirth = birth;
public int getUSex()
return uSex;
public void setUSex(int sex)
uSex = sex;
public String getUAddress()
return uAddress;
public void setUAddress(String address)
uAddress = address;
public String getUNickname()
return uNickname;
public void setUNickname(String nickname)
uNickname = nickname;
public String getUId()
return uId;
public void setUId(String id)
uId = id;
这是sqlMap中的userinfo.xml配置文件:
<!-- 新增用户 -->
<insert id="insertUserinfo" parameterClass="MWWeb.bbs.po.UserinfoPo">
<![CDATA[
INSERT INTO userinfo(
uId,
uName,
uNickname,
uPass,
uEmail,
uBirth,
uSex,
uAddress
)
values (
#uId:VARCHAR#,
#uName:VARCHAR#,
#uNickname:VARCHAR#,
#uPass:VARCHAR#,
#uEmail:VARCHAR#,
#uBirth:VARCHAR#,
#uSex:INT#,
#uAddress:VARCHAR#,
) ]]>
</insert>
我部署好了启动tomcat时出现了这样的错误:
There is no READABLE property named 'uId' in class 'MWWeb.bbs.po.UserinfoPo'
这是什么问题呢,我找了好久都没有解决。
希望各位达人能够给与指教,在下实在是感激不尽
问题补充:
我又重新部署了,不是没有编译,部署了旧的.class文件
我把get和set又重新设置了一下,但还是报同样的错误,好像和get,set没有关系
为 JavaBean 创建属性时,必须牢记:缩略语通常被视为一个独立的单词,而不是单个字母。例如,URL 对应的属性名应该用 url,相应的 getUrl()/setUrl(),所以 ID 还是用 id 作为属性吧,相应的 getId()/setId()。
规范中另一个特别的地方就是,第二个字母为大写的属性名要区别对待。如果属性名的第二个字母是大写的,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。
楼主注意看一下。第二个字母不要大写! 参考技术A 你把所有的
uId,uXxx....
全都改为
userId,userXxx
然后所有getter/setter都重新生成下
我上面说的命名你也改了么? 参考技术B 个人认为是你在写sqlmap时在#uId:VARCHAR#等这些在冒号左右有空格,你把这些空格去掉就ok了,之前也遇到过这些问题。就是这样解决的 参考技术C public void setUId(String id)
uId = id;
改成
public void setUId(String uId )
this.uId = uId ;
老兄,eclipse有自动生成getter and setter方法的,不要自己写,反而会出错
防止 Ibatis 中的 SQL 注入
【中文标题】防止 Ibatis 中的 SQL 注入【英文标题】:Preventing SQL Injection In Ibatis 【发布时间】:2011-04-25 01:50:59 【问题描述】:Ibatis 中是否有任何内置功能可以帮助防止 SQL 注入攻击?我不是在寻找 Ibatis 之外的方法列表来执行此操作,我只是想知道 Ibatis 是否有任何东西可以防止 SQL 注入。
【问题讨论】:
【参考方案1】:IBatis 在后台使用 JDBC 预处理语句,因此是安全的。但是,这只适用于您使用 #
表示法的情况。也可以使用不安全的$
表示法将变量直接连接到您的查询中(除非您将它们转义)。有关背景信息,请参阅this article。
【讨论】:
【参考方案2】:我猜 iBatis 使用的是准备好的语句和参数绑定,所以它是安全的。
【讨论】:
-1 - 猜测像 SQL 注入入口点一样敏感的东西 使用 $ 表示法不安全以上是关于Ibatis中的一个“There is no READABLE property named 'uId' in class 'userinfoPo”错误的主要内容,如果未能解决你的问题,请参考以下文章
ibatIS中的isNotNullisEqualisEmpty
Ibatis中的一个“There is no READABLE property named 'uId' in class 'userinfoPo”错误