Spring Boot + MyBatis 创建Oracle表格
2018-10-02 本文已影响0人
一杉风雨
背景
项目中有对数据库表格动态建立自增主键的需求,而Oracle数据库不能像MySQL一样简单的使用auto_increment primary key
。需要分别创建序列和触发器,在这里加以记录。
内容
<!--假设表已经存在-->
<!--创建序列-->
<update id="createSequence" parameterType="String">
CREATE SEQUENCE ${value}
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
</update>
<!--创建触发器, statementType为必须-->
<update id="createTrigger" parameterType="com.guanshan.model.clientlist.TriggerInfo" statementType="STATEMENT">
CREATE TRIGGER ${triggerName} BEFORE
INSERT ON ${tableName} FOR EACH ROW WHEN (NEW.ID IS NULL)
BEGIN
SELECT ${sequenceName}.nextval INTO : NEW.ID FROM dual;
END ;
</update>
备注
statementType属性有三种值(默认的值是preparedstatement):
statement
preparedstatement
callablestatement
Statement: 每次执行sql语句,数据库都要执行sql语句的编译
PreparedStatement: 预编译sql语句
callablestatement: 调用存储过程