mybatis 为什么得不到返回的主键

zhangxiaoyan06 2013-04-10 11:09:51
sqlMap配置1:

<insert id="insert" parameterType="org.learn.baseframe.entity.SysUser" useGeneratedKeys="true" keyProperty="id">
insert into t_sys_user (su_username, su_password, su_name, su_sex)
values (#{username,jdbcType=NVARCHAR}, #{password,jdbcType=NVARCHAR}, #{name,jdbcType=NVARCHAR},
#{sex,jdbcType=NVARCHAR})
</insert>

使用 sysUser.getId() 可以得到值

sqlMap配置2:

<insert id="insert" parameterType="org.learn.baseframe.entity.SysUser">
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
insert into t_sys_user (su_username, su_password, su_name, su_sex)
values (#{username,jdbcType=NVARCHAR}, #{password,jdbcType=NVARCHAR}, #{name,jdbcType=NVARCHAR}, #{sex,jdbcType=NVARCHAR})
SELECT SCOPE_IDENTITY()
</selectKey>
</insert>

使用 sysUser.getId() 可以得到值

sqlMap配置3:

<insert id="insert" parameterType="org.learn.baseframe.entity.SysUser">
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT SCOPE_IDENTITY()
</selectKey>
insert into t_sys_user (su_username, su_password, su_name,su_sex)
values (#{username,jdbcType=NVARCHAR}, #{password,jdbcType=NVARCHAR}, #{name,jdbcType=NVARCHAR},
#{sex,jdbcType=NVARCHAR})
</insert>

使用 sysUser.getId() 得到的却是null

因为sqlmap.xml是用mybatis-generator工具生成的,生成的配置是sqlMap配置3的配置,不想手工更改配置文件,各位大大,看看为什么是null值啊!!!
...全文
505 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangxiaoyan06 2013-04-10
  • 打赏
  • 举报
回复
难道只能手工修改了!!!!
zhangxiaoyan06 2013-04-10
  • 打赏
  • 举报
回复
配置2 得到的rows值居然是-1 只有配置1的既可以得到主键值,返回的值rows也是1
  • 打赏
  • 举报
回复
这本身就是他的bug
zhangxiaoyan06 2013-04-10
  • 打赏
  • 举报
回复
这个就是配置1,配置1是可以得到对应的主键值的,但是我现在需要的是配置3得到主键值,看了其他的文档,所是配置3也可以得到对应的主键值的,但是我的程序就是得不到,不知道为什么?(因为工具生成的配置是配置3的,我不想手工修改配置文件,要不然生成一次我就得改一次,太麻烦了)
  • 打赏
  • 举报
回复
<insert id="insert" parameterType="org.learn.baseframe.entity.SysUser"> <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" > SELECT SCOPE_IDENTITY() </selectKey> 改为 <insert id="insert" parameterType="org.learn.baseframe.entity.SysUser" useGeneratedKeys="true" keyProperty="id"> …… 看下

67,512

社区成员

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

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