欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。
MyBatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是 Oracle Sequece 和 Mysql 自增主键。主要说明下在MyBatis中对于自增主键的配置。
1、MySQL主键自增设置
方法一:
<insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="pid">
insert into person(name,age) values(#{name},#{age})
</insert>
添加:
useGeneratedKeys="true" keyProperty="pid"
其中keyProperty对应实体类属性,如果使用@Parm注解,要采用person.pid的形式。
方法二:
<insert id="insert" parameterType="Person">
<selectKey keyProperty="pid" resultType="long">
select LAST_INSERT_ID()
</selectKey>
insert into person(name,age) values(#{name},#{age})
</insert>
2、Oracle主键自增设置
方法一:创建序列
CREATE SEQUENCE person_sequence
INCREMENT BY 1
NOMAXVALUE
NOCYCLE
CACHE 10;
<insert id="insert" parameterType="Person">
insert into person(name,age) values(person_sequence.nextval,#{name},#{age})
</insert>
方法二:创建触发器
create or replace trigger person_trigger
before insert on person
for each row
begin
select person_sequence.nextval into :new.person_id from dual;
end person_trigger;
此时插入的时候触发器会帮你插入id
<insert id="insert" parameterType="Person">
insert into person(name,age) values(#{name},#{age})
</insert>