异常信息提示<result column="USER_ID" property="id" />这个配置有问题 --- Check the result mapping for the 'id' property. --- Cause: java.sql.SQLException: Column 'USER_ID' not found. 1.检查SQL,保证结果集中有USER_ID字段 2.检查Users Pojo,是否有id3. 3.检查USER_ID和Users.id的类型是否匹配,不匹配需要加javaType
Map<Object,Object> paramMap = new HashMap<Object,Object>();
PageUtil<Users> page = new PageUtil<Users>(Constants.PAGE_SIZE);
//设置每页大小
page.setPageSize(Constants.PAGE_SIZE);
//设置第几页
try {
page.setPageNo(Long.parseLong(pageNO));
} catch (Exception e) {
// TODO: handle exception
page.setPageNo(1L);
}
//总共多少纪录
long totalNum = usersDao.searchUserByShownameCount(users);
//设置总纪录数
page.setTotalItemNumber(totalNum);
if(page.getPageNo()==0||page.getPageNo()==null){
page.setPageNo(1L);
}
paramMap.put("loginName", users.getLoginName());
paramMap.put("showName", users.getShowName());
paramMap.put("fromIndex", page.getFromIndex());
paramMap.put("pageSize",page.getPageSize());
page.setResult(usersDao.searchUserByShowname(paramMap));
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG
查看出错前执行的sql语句,返回的结果时,按字面意思理解就是查询出结果了,但在进行resultmap映射时出错....
--- The error occurred in com/cloudsoaring/dao/sqlmap/Users_SqlMap.xml.
应该是Users_SqlMap.xml中的
<resultMap id="resultUsers" class="xxx">中没有<result column="USER_ID" property="id" jdbcType="DECIMAL" />
Column 'USER_ID' not found.
首先怀疑这个表的字段名写错了或者是你的:返回的字段和java对象建立对应关系时错误。。id属性是否有?还有更严重的:
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="loginName">
a.LOGIN_NAME LIKE '%$loginName$%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="showName">
a.SHOW_NAME LIKE '%$showName$%'
</isNotEmpty>
<isNotNull property="fromIndex">
<isNotNull property="pageSize">
LIMIT #fromIndex# , #pageSize#
</isNotNull>
</isNotNull>
</dynamic>你这些模糊查询的部分。。有sql注入危险不是标准的sqlmap写法建议改一下
如果SQL 构建出来的都有问题就检查程序和配置文件~~
<resultMap class="Users" id="resultUsers">
<result column="USER_ID" property="id" />
<result column="LOGIN_NAME" property="loginName" />
<result column="SHOW_NAME" property="showName" />
<result column="PASS_WORD" property="password" />
<result column="CREATE_TIME" property="createTime" />
<result column="GROUP_ID" property="groupId" />
<result column="ADMIN_FLG" property="adminFlag" />
<result column="b.ID" property="group.id" />
<result column="b.GROUP_NAME" property="group.groupName" />
<result column="b.HIDE_FLG" property="group.hideFlag" />
</resultMap>
<!--resultMap id="映射名" type="bean类名或主配置声明的简称"-->
<!--result property="属性名" column="数据库字段名" /-->
2.其实这种问题,你完全可以可以把你的sql放在数据库客户端跑一下,问题很容易解决的
<typeAlias alias="Page" type="com.cloudsoaring.common.util.PageUtil" />
<typeAlias alias="Group" type="com.cloudsoaring.entity.user.Group" />
<resultMap class="Users" id="resultUsers">
<result column="USER_ID" property="id" />
<result column="LOGIN_NAME" property="loginName" />
<result column="SHOW_NAME" property="showName" />
<result column="PASS_WORD" property="password" />
<result column="CREATE_TIME" property="createTime" />
<result column="GROUP_ID" property="groupId" />
<result column="ADMIN_FLG" property="adminFlag" />
<result column="ID" property="group.id" />
<result column="GROUP_NAME" property="group.groupName" />
<result column="HIDE_FLG" property="group.hideFlag" />
</resultMap>传的是map类型,唉,
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="loginName">
a.LOGIN_NAME LIKE '%$loginName$%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="showName">
a.SHOW_NAME LIKE '%$showName$%'
</isNotEmpty>
<isNotNull property="fromIndex">
<isNotNull property="pageSize">
LIMIT #fromIndex# , #pageSize#
</isNotNull>
</isNotNull>
</dynamic>你这些模糊查询的部分。。有sql注入危险不是标准的sqlmap写法建议改一下
求详解
--- Check the result mapping for the 'id' property.
--- Cause: java.sql.SQLException: Column 'USER_ID' not found.
1.检查SQL,保证结果集中有USER_ID字段
2.检查Users Pojo,是否有id3.
3.检查USER_ID和Users.id的类型是否匹配,不匹配需要加javaType
原来是我的返回类型写错了
返回的数字,结果携程了User类。唉,粗心啊,害我搞了2两天,感谢诶大家的帮助