求助,菜鸟一枚,在使用mybatis执行insert操作返回主键ID的时候,可以正常插入,但是无法返回主键IDmapper
<insert id="insertUrl" parameterType="UploadFile">
        <selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
            select sys_right_seq.NEXTVAL as id from dual
        </selectKey>
        insert into file_Info (
            id,
            url
        )values (
            #{id},
            #{url}
        )
    </insert>实体类
 /*ID*/
    private String id;
    /*文件路径*/
    private  String url;    public String getId() {
        return id;
    }    public void setId(String id) {
        this.id = id;
    }    public String getUrl() {
        return url;
    }    public void setUrl(String url) {
        this.url = url;
    }DAOpublic int insertUrl(UploadFile uploadFile);实现
@Override
    public int insertUrl(UploadFile uploadFile) throws ServiceException {
        return uploadFileDao.insertUrl(uploadFile);
    }

解决方案 »

  1.   

    你是说通过insertUrl这个方法直接返回主键?返回的主键是会在你传入的uploadFile.id里面,你要用uploadFile.getId得到吧,然后好像order一般都写成after吧
      

  2.   

    oracle的返回主键我还没试过 ,你是不是应该把order 的值 改成after?
    参考
      

  3.   

    不是的,oracle的order是用before的。现在的问题是我通过get方法获取不到返回的ID,get为null
      

  4.   

     <insert id="insertUser" parameterType="com.soyen.mybatis.po.User2"> 
        insert into user2(id, username, birthday, sex, address) values( USER_SEQUENCE.Nextval,  #{username},  #{birthday},  #{sex},  #{address})
    <selectKey resultType="java.lang.Integer"  keyProperty="id" order="AFTER">
      select USER_SEQUENCE.CURRVAL as id FROM dual
      </selectKey>
    </insert>  你试一下这种,插入的时候写序列号,插入完在查出当前的序列号