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: 调用存储过程
上一篇下一篇

猜你喜欢

热点阅读