mybatis typeHandle异常

oh_my_god2014 2019-04-30 10:43:56
### Error querying database. Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'sex' from result set. Cause: java.lang.IllegalArgumentException: No enum constant chapter2.po.SexEnum.1
### The error may exist in chapter2/mapper/UserMapper.xml
### The error may involve chapter2.mapper.UserMapper.getUser
### The error occurred while handling results
### SQL: select * from t_user WHERE id=?
### Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'sex' from result set. Cause: java.lang.IllegalArgumentException: No enum constant chapter2.po.SexEnum.1
DEBUG 2019-04-30 22:38:55,672 org.apache.ibatis.transaction.jdbc.JdbcTransaction: Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.Connection@271053e1]
DEBUG 2019-04-30 22:38:55,672 org.apache.ibatis.transaction.jdbc.JdbcTransaction: Closing JDBC Connection [com.mysql.jdbc.Connection@271053e1]
DEBUG 2019-04-30 22:38:55,673 org.apache.ibatis.datasource.pooled.PooledDataSource: Returned connection 655381473 to pool.



...全文
385 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
对梦想的牵挂 2019-05-06
  • 打赏
  • 举报
回复
结果集映射的不是枚举的value,或许可以试试自定义枚举 。
引用
EnumTypeHandler直接存储name值。它是mybatis默认的枚举类型转换器。 EnumOrdinalTypeHandler存储enum类里的序号值,此时数据库表字段一般对应用smallint/int类型的处理。
参照:https://www.cnblogs.com/jeffen/p/6380724.html
oh_my_god2014 2019-04-30
  • 打赏
  • 举报
回复
<result property="sex" column="sex_name" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/> <!--<result property="sex" column="sex" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>--> 上面的注释掉用下面handler可以运行。。。很奇怪
oh_my_god2014 2019-04-30
  • 打赏
  • 举报
回复
mapper配置 <?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="chapter2.mapper.UserMapper"> <resultMap type="chapter2.po.User" id="userMap"> <id property="id" column="id" javaType="long" jdbcType="BIGINT"/> <result property="userName" column="user_name"/> <result property="cnname" column="cnname"/> <!-- 数据库多个字段确定sex的属性 --> <result property="sex" column="sex_name" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/> <!--<result property="sex" column="sex" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>--> <result property="mobile" column="mobile"/> <result property="email" column="email"/> <result property="note" column="note"/> <result property="birthday" column="birthday"/> </resultMap> <insert id="insertUser" parameterType="chapter2.po.User"> insert into t_user(user_name,cnname,birthday,sex,sex_name,email,mobile,note) values(#{userName},#{cnname},#{birthday}, #{sex ,typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}, #{sex ,typeHandler=org.apache.ibatis.type.EnumTypeHandler}, #{email},#{mobile},#{note}) </insert> <select id="getUser" parameterType="long" resultMap="userMap"> select * from t_user <where> id=#{id} </where> </select> </mapper>

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧