杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》
面试过好多人,包括自己也属于这么一个情况:
遇到问题直接去网上查,一般都可以查到解决方案。其中也包括一些基本的面试资料的答案。
其实有很多答案也都是正确的,但是还是存在一些压根就是胡乱抄来的答案,也不经过验证就直接贴在自己博客上
简直是害人害己,这开发工程师的圈子大了真是什么偷懒的都有。杜绝这一现象从我做起吧。以前写的代码很少有返回主键值的,都是记录生成记录的条数,所以我也是第一次做,特此记录
今天说下 oracle 能像mysql 和 sql server 一样返回主键:
1:创建你的表,然后创建seq
create sequence SEQ_YOUR_TABLE_NAME minvalue 1 maxvalue 9999999999999999999999999999 start with 1 increment by 1 nocache;
2:创建好以后开始写xml的配置,只创建序列就可以,不需要创建触发器。
因为在插入数据的时候,mybatis 直接就将id set到你传入的bean中了
<insert id="insertId" parameterType="com.xxx.model.YOURMODEL"> <selectKey keyProperty="id" resultType="java.lang.Integer" order="BEFORE"> select SEQ_YOUR_TABLE_NAME.nextval as id from dual </selectKey> insert into YOUR_TABLE_NAME (ID,) values ( #{id,jdbcType=DECIMAL}) </insert>
3:然后JAVA 代码:记住
@Test public void testPriamary(){ mapper.insertId(yourbean); int result = yourbean.getId();//这里是getId System.out.println(result);//返回你的主键值 }
不积跬步无以至千里