Oracle数据库、Mybatis、MySql常用

Oracle设置id自增长

首先创建序列
CREATE SEQUENCE SEQ_SMS_BACK_LOG    #SEQ_SMS_BACK_LOG为序列名称
  START WITH 1
  INCREMENT BY 1
  NOCACHE
  NOCYCLE;

然后在插入时给id赋值SEQ_SMS_TEMPLATE_IMPORT.nextval即可

mybatis使用Oracle序列批量插入

int templateImportAddBatch(@Param("list") List<ExcelOpt> excelOptList);

<insert id="templateImportAddBatch" parameterType="java.util.List" useGeneratedKeys="false">
        insert into sms_msg_template_import(
        ID,
        TEMPNAME,
        STATUS
        )
        select SEQ_SMS_TEMPLATE_IMPORT.nextval, A.*  from(//select SEQ_SMS_TEMPLATE_IMPORT.nextval这段对应ID
        <foreach collection="list" item="item" index="index"//collection="list"对应@Param("list")
                 separator="UNION ALL">
            SELECT
            #{item.tempName,jdbcType=VARCHAR},//这里的对应ID后面的其他字段,和上面字段的顺序保持一致
            #{item.status,jdbcType=BIGINT}
            from dual
        </foreach>
        ) A
    </insert>

Oracle创建触发器

CREATE OR REPLACE TRIGGER sms_back_log_trigger  #sms_back_log_trigger为触发器名称
BEFORE INSERT ON sms_back_log    #sms_back_log为表名
FOR EACH ROW
BEGIN
  IF :NEW.id IS NULL THEN
    SELECT SEQ_SMS_BACK_LOG.NEXTVAL INTO :NEW.id FROM DUAL;   #SEQ_SMS_BACK_LOG为序列名称
  END IF;
END;

在mybatis中模糊查询字段

and s.instruct_name like CONCAT('%', #{instructName}, '%')
或者
and b.corp_name like '%' || #{corpName} || '%'

在mybatis中范围查询

AND INSTRUCT_TIME <![CDATA[  >= ]]> #{startTime}

在mybatis中获取MySql插入的id

    <insert id="addSchool" parameterType="com.yhyx.mallxdfzx.model.School">
        insert into sys_school
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="schoolName != null and schoolName != ''">
                SCHOOL_NAME,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="schoolName != null and schoolName != ''">
                #{schoolName,jdbcType=VARCHAR},
            </if>
        </trim>
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
    </insert>

在mybatis中获取Oracle插入的id

<insert id="insertSelective" parameterType="com.yhyx.smsbus.model.sys.SmsMsgTemplate" useGeneratedKeys="true"
            keyColumn="iTemplate">
        <selectKey keyProperty="iTemplate" resultType="long" order="BEFORE">
                select SEQ_SMS_MSG_TEMPLATE.nextval as iRole from dual
        </selectKey>
        insert into SMSGATEWAY.T_SMS_MSG_TEMPLATE
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="iTemplate != null">
                I_TEMPLATE,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="iTemplate != null">
                #{iTemplate,jdbcType=DECIMAL},
            </if>
        </trim>
    </insert>

备份表

CREATE TABLE 新表名 SELECT * FROM  旧表名

B树结构类型的数据递归查询并拼接父子节点

SELECT
  SUBSTR(SYS_CONNECT_BY_PATH(a.org_name, '>'), 2) AS concatenated_path,--拼接org_name字段
  a.org_code,
  a.org_name,
  a.p_org_id,
  a.org_id
FROM
  tb_upms_org a
START WITH org_id = '2021030900031799'   --这里的值的最大的父节点的id
CONNECT BY PRIOR org_id = p_org_id    --这里是递归条件,p_org_id是父id,org_id 是子id

在这里插入图片描述
mybatis执行任意sql

dao接口
    //执行任意sql
    List<HashMap> qryAny(@Param("sql")String sql);
    
对应的XML
    <select id="qryAny" resultType="java.util.HashMap">
        ${sql}
    </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值