背景
oracle的主键生成一般是通过sequence来生成的,但是又不像mysql那样自动生成,需要手动设置,下面是一种在xml中的sql中比较好的方式,
xml代码
<insert id="insertLogininfor" parameterType="SysLogininfor">
<selectKey keyProperty="infoId" resultType="long" order="BEFORE">
SELECT seq_sys_logininfor.NEXTVAL as infoId FROM DUAL
</selectKey>
insert into sys_logininfor (info_id, login_name, status, ipaddr, login_location, browser, os, msg, login_time)
values (#{infoId}, #{loginName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate)
</insert>
代码解释
使用来的selectKey标签
<selectKey keyProperty="infoId" resultType="long" order="BEFORE">
SELECT seq_sys_logininfor.NEXTVAL as infoId FROM DUAL
</selectKey>
上面标签里的内容是,查询sequence seq_sys_logininfor的下一个值,赋值给infoId,类型是Long,order是在其他sql执行之前操作
然后infoId和下面的#{infoId}的参数保持一致,而infoId和对象里的参数保持一致即可