mybatis的源码
mybatis的原理
mybatis oracle 利用sys_guid()生成对应的主键,插入数据,并返回对应的主键
通过源码我们知道,mybatis当中insert方法返回的只能是int类型,所以不可能返回String类型,所以我们需要传入一个对象,然后由对象存储对应的主键
mapper的方法如下写:
void insert(@Param("kk")Kk kk);
其他的原理是在执行insert语句的时候,会先执行selectKey中的sql,然后注入到kk对象的id属性当中,然后在执行insert语句
<insert id="insert" >
<selectKey keyProperty="kk.sid" resultType="java.lang.String" order="BEFORE">
select sys_guid() as sid from dual
</selectKey>
insert into kk(sid,name) values(#{kk.sid},#{kk.name})
</insert>
获取主键的java代码
Kk kk = new Kk();
kk.setName("sscaox11222221uekuns");
mapper.insert(kk);
System.out.println(JSONObject.toJSONString(kk));
sqlSession.commit();
mybatis mysql 自增主键 获取
order="after" 表示在insert语句之后执行,LAST_INSERT_ID函数的功能就是"使得我们能够轻松获取前一次INSERT运算 自动生成的ID号码" 和oracle一样,最终数据写入到传入对象的属性上,也就是keyProperty
<insert id="insert">
<selectKey keyProperty="cxk.id" resultType="java.lang.Integer" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
insert into cxk(name,age,sex) values (#{cxk.name},#{cxk.age},#{cxk.sex})
</insert>
浙公网安备 33010602011771号