oracle中用mybatis在xml中调用sequence为id自动生成主键

926 阅读1分钟

背景

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和对象里的参数保持一致即可