当前位置:编程学习 > JAVA >>

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

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值啊!!! MyBatis select --------------------编程问答-------------------- <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">
……
看下 --------------------编程问答-------------------- 这个就是配置1,配置1是可以得到对应的主键值的,但是我现在需要的是配置3得到主键值,看了其他的文档,所是配置3也可以得到对应的主键值的,但是我的程序就是得不到,不知道为什么?(因为工具生成的配置是配置3的,我不想手工修改配置文件,要不然生成一次我就得改一次,太麻烦了) --------------------编程问答-------------------- 这本身就是他的bug --------------------编程问答-------------------- 配置2 得到的rows值居然是-1 

只有配置1的既可以得到主键值,返回的值rows也是1 --------------------编程问答-------------------- 难道只能手工修改了!!!!
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,