mybatis中的selectKey

    mybatis中的selectKey主要是为了解决插入数据的时候主键无法自动生成的问题 , 通过这个标签可以设置主键生成的方式并将生成的主键返回.

    selectKey的主要属性:

          keyProperty : 指定为哪一列生成主键

          resultType : 结果的类型 , 和keyProperty的类型保持一致

          order         : order的值可以是before和after , 值为before的时候会先设置keyProperty然后执行insert语句 , 值为after的时候会先执行插入语句 , 然后再设置keyProperty

     在为order属性设置值的时候需要注意 :

          在MySQL中是支持主键自增的,那么这个时候你的order的值就必须设置为after,也就是在执行完insert操作 之后才可以获取主键的值,否则的话就会报错(因为在没有执行insert操作之前你是没有主键的值得) ,  使用如下:

           

                INSERT INTO TEST (NAME,SEX) VALUES(#{name},#{sex})
              
                    select LAST_INSERT_ID() as value
              

           

         但是在oracle这种不支持主键自增的数据库中 , order的值必须设置为before , 先为序列进行赋值 , 然后在执行插入操作 , 否则的话会报错 , 如下:

         

             
                    SELECT test_seq.nextval AS id FROM DUAL
             

              INSERT INTO TEST(id,NAME,SEX)
              VALUES(#{id},#{name},#{sex})

         

你可能感兴趣的:(java)