今天有伙伴,遇到这样一个提示,来问我怎么排除异常,
ResultMapException: Error attempting to get column 'username' from result set. Cause: java.sql.SQLDataException: Cannot convert string '王五' to java.sql.Date value‘
异常分析:
结果映射异常,从结果集获取列username时错误。java中sql语句中的SQL数据异常:不能将字符串类型数据“王五”,转换成数据类型的值。
并且又有如下三行提示:
### The error may exist in RoleMapper.xml
### The error may involve com.itheima.mapper.RoleMapper.findAll
### The error occurred while handling results
错误应该存在RoleMapper.xml 提示错误应该存在的位置
错误应该涉及:com.itheima.mapper.RoleMapper.findAll
错误发生在处理结果集时
根据提示的引导,很容易发现错误的出处
RoleMapper.xml:
<mapper namespace="com.itheima.mapper.RoleMapper"> <!-- 自定义查询结果集映射 --> <resultMap id="findAllResultMap" type="role"> <id property="roleId" column="r_id"/> <result property="roleName" column="r_name" /> <result property="roleDesc" column="r_desc"/> <!-- <手动映射多对多> --> <collection property="userList" ofType="user"> <id property="id" column="id"/> <result property="username" column="username"/> <result property="birthday" column="username"/> <result property="sex" column="sex"/> <result property="address" column="address"/> </collection> </resultMap> <!-- 实现查询所有角色,并且关联查出该角色下的所有用户信息。 --> <select id="findAll" resultMap="findAllResultMap"> SELECT r.r_id, r_name, r_desc,u.id, username, birthday, sex, address from role r left join user_role ur on r.r_id = ur.rid left join user u on u.id=ur.uid; </select> </mapper>
根据提示:很明显,错误在这
java 语句中的变量名与数据库中的列名,对应错了
改正后如下: