资讯专栏INFORMATION COLUMN

Mybatis增删改查之Oracle

wudengzan / 1388人阅读

摘要:增删改查之一查询普通查询返回普通的持久层对象由于数据库字段风格和不同所以建立一个映射带有自定义对象的查询带了一个中的就是查询附带的的函数是中的属性名查询语句附带的查询语句二新增普通新增返回主键多了一个中是写中属性

Mybatis增删改查之Oracle
一. 查询

普通查询(返回普通的持久层对象,由于数据库字段风格和java不同,所以建立一个map映射)


    
    
    
    
    
    
    
    
    
    
    
    
    
   

带有自定义对象的查询(带了一个List)



    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  

  
    
    
    
    
    
    
    
    
    
  

  

  

二. 新增

普通新增

  
    insert into RULES_BOND
    (RB_ID,
    RC_ID,
    BOND_CODE,
    BID_STRATEGY_ID,
    OFR_STRATEGY_ID,
    STATUS,
    OPERATOR_ID,
    LAST_UPDATED_DATE)
    values (SEQ_RULES_BOND.nextVal,
    #{ruleConditionId,jdbcType=NUMERIC},
    #{bondCode,jdbcType=VARCHAR},
    #{bidStrategyId,jdbcType=VARCHAR},
    #{ofrStrategyId,jdbcType=VARCHAR},
    #{status,jdbcType=VARCHAR},
    #{operatorId,jdbcType=VARCHAR},
    systimestamp)
  

返回主键(多了一个selectkey)



 
      SELECT SEQ_RULES_BOND.Nextval from DUAL
    
    insert into RULES_BOND
    (RB_ID,
    RC_ID,
    BOND_CODE,
    BID_STRATEGY_ID,
    OFR_STRATEGY_ID,
    STATUS,
    OPERATOR_ID,
    LAST_UPDATED_DATE)
    values (#{ruleBondId,jdbcType=NUMERIC},
    #{ruleConditionId,jdbcType=NUMERIC},
    #{bondCode,jdbcType=VARCHAR},
    #{bidStrategyId,jdbcType=VARCHAR},
    #{ofrStrategyId,jdbcType=VARCHAR},
    #{status,jdbcType=VARCHAR},
    #{operatorId,jdbcType=VARCHAR},
    systimestamp)
  

批量新增

参照网上写了一下,一直报缺失表达式,原来是insert into后面 是不需要 values的;

还有就是关于Oracle返回主键List ,我在网上暂时还没找到能正确执行的例子 ,求大佬告知


    insert into RULES_BOND
    (RB_ID,
    RC_ID,
    BOND_CODE,
    BID_STRATEGY_ID,
    OFR_STRATEGY_ID,
    STATUS,
    OPERATOR_ID,
    LAST_UPDATED_DATE
    )
    SELECT  SEQ_RULES_BOND.NEXTVAL,t.*
    FROM (
    
      select
      #{item.ruleConditionId,jdbcType=NUMERIC},
      #{item.bondCode,jdbcType=VARCHAR},
      #{item.bidStrategyId,jdbcType=VARCHAR},
      #{item.ofrStrategyId,jdbcType=VARCHAR},
      #{item.status,jdbcType=VARCHAR},
      #{item.operatorId,jdbcType=VARCHAR},
       systimestamp
      from dual
    
      ) t
  

批量新增,存在则插入


    MERGE INTO RULES_CONDITION t
    USING (
    
      select #{item.ruleConditionId,jdbcType=NUMERIC} id,
      #{item.ruleCatOne,jdbcType=VARCHAR} cat1,
      #{item.ruleCatTwo,jdbcType=VARCHAR} cat2,
      #{item.bondCodeOne,jdbcType=VARCHAR} code1,
      #{item.bondCodeTwo,jdbcType=VARCHAR} code2,
      #{item.ruleOperateSymbol,jdbcType=VARCHAR} symbol,
      #{item.operatorId,jdbcType=VARCHAR} u
      from DUAL
    ) t1
    
    ON (t.RULE_CAT1 = t1.cat1 AND t.RULE_CAT2 = t1.cat2 AND t.RC_OPER_TYPE = t1.symbol)
    
    WHEN MATCHED THEN
    UPDATE SET t.BOND_CODE_1 = t1.code1,t.BOND_CODE_2 = t1.code2,t.LAST_UPDATED_DATE = default
    
    WHEN NOT MATCHED THEN
    INSERT(RC_ID, RULE_CAT1, RULE_CAT2, RC_OPER_TYPE, RULE_REF, BOND_CODE_1, BOND_CODE_2,RC_STATUS,OPERATOR_ID,LAST_UPDATED_DATE)
    VALUES (SEQ_RULES_CONDITION.nextval, t1.cat1, t1.cat2, t1.symbol, "1", t1.code1, t1.code2, "0", t1.u,default)
  

三. 修改

(begin,end最好还是加上,之前报错一直找不到错,加上begin,end就好了;end前后都加分号";",begin不用加)

普通修改


    begin
    update RULES_BOND
    set
    
      BID_STRATEGY_ID=#{bidStrategyId,jdbcType=VARCHAR},
    
    
      OFR_STRATEGY_ID=#{ofrStrategyId,jdbcType=VARCHAR},
    
    
      OPERATOR_ID=#{operatorId,jdbcType=VARCHAR},
    
    
      STATUS=#{status,jdbcType=VARCHAR},
    
    LAST_UPDATED_DATE=SYSTIMESTAMP
    WHERE RB_ID = #{ruleBondId,jdbcType=NUMERIC};
    end;
  

批量修改(begin,end加在 foreach的open和close处,记得加上分号)


    
      UPDATE RULES_CONDITION
      
        
          RULE_REF=#{item.ruleRef,jdbcType=VARCHAR},
        
        
          START_EFFECT_TIME=#{item.effectTimeOfStart,jdbcType=VARCHAR},
        
        
          END_EFFECT_TIME= #{item.effectTimeOfEnd,jdbcType=VARCHAR},
        
        
          BP_THRESHOLD= #{item.bpThreshold,jdbcType=NUMERIC},
        
        
          RC_STATUS= #{item.ruleStatus,jdbcType=VARCHAR},
        
        
          OPERATOR_ID= #{item.operatorId,jdbcType=VARCHAR},
        
        LAST_UPDATED_DATE=default,
      
      WHERE RC_ID = #{item.ruleConditionId,jdbcType=INTEGER}
    
  

四. 删除

普通删除


    delete
    from RULES_BOND
    where RB_ID = #{ruleBondId}
      AND TO_TIMESTAMP(TO_CHAR(LAST_UPDATED_DATE, "yyyy-MM-dd hh24:mi:ss"), "yyyy-MM-dd hh24:mi:ss") = #{lastUpdateTime,jdbcType=TIMESTAMP}
  

批量删除

​ 1)批量执行语句


    
      DELETE FROM RULES_BOND
      WHERE RB_ID = #{item.ruleBondId} and TO_TIMESTAMP(TO_CHAR(LAST_UPDATED_DATE, "yyyy-MM-dd hh24:mi:ss"), "yyyy-MM-dd hh24:mi:ss") = #{item.lastUpdateTime,jdbcType=TIMESTAMP}
    
  

​ 2)综合成一条语句执行


    DELETE FROM RULES_BOND
    WHERE RB_ID IN (
    SELECT A.RB_ID FROM (
    
      SELECT * FROM RULES_BOND
      WHERE RB_ID = #{item.ruleBondId} AND TO_TIMESTAMP(TO_CHAR(LAST_UPDATED_DATE, "yyyy-MM-dd hh24:mi:ss"), "yyyy-MM-dd hh24:mi:ss") = #{item.lastUpdateTime,jdbcType=TIMESTAMP}
    
    )A
    )
  

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35348.html

相关文章

  • 搭建简单的dubbo案例,并实现对数据库的删改

    摘要:创建父工程文件如下这里只添加几个最简单的依赖启动父依赖依赖依赖依赖创建子工程 1.创建父工程 showImg(https://segmentfault.com/img/bVbgtl4?w=387&h=255); pom文件如下(这里只添加几个最简单的依赖) 4.0.0 wyb springbootDubbo pom 1.0-SNAPSHOT...

    MageekChiu 评论0 收藏0
  • Java3y文章目录导航

    摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...

    KevinYan 评论0 收藏0
  • Mybatis-实现数据的删改

    摘要:如果是查询单个数据的话,用第二讲用过的方法就可以了。以的形式引用参数的属性,将使用反射读取参数的此属性。引用其他的等属性与此一致。 showImg(https://segmentfault.com/img/bVbst45?w=640&h=293); 用 mybatis 查询数据,包括列表 用 mybatis 增加数据 用 mybatis 更新数据. 用 mybatis 删除数据. ...

    darcrand 评论0 收藏0
  • 一次慢查询暴露的隐蔽的问题

    摘要:最近解决了一个生产慢查询的问题,排查问题之后发现一些比较隐匿且容易忽略的问题。所以实际在数据库查询如下可能这里发生一次隐式转换。这次查询走的是索引。 showImg(https://segmentfault.com/img/bVbmJNK?w=6000&h=4000); Photo by Iga Palacz on Unsplash 最近解决了一个生产 SQL 慢查询的问题,排查问题之...

    missonce 评论0 收藏0
  • 移动商城项目【总结】

    摘要:有必要建一个资源服务器存放静态资源。一些用户级别的数据轻量可以考虑存储在中。存储的是值,可以通过来对和对象之间的转换如果我们的数据是在后台传过去或者转换而成的,在前台上并没有做什么改变的话。 移动商城项目总结 移动商城项目是我第二个做得比较大的项目,该项目系统来源于传智Java168期,十天的视频课程(想要视频的同学关注我的公众号就可以直接获取了) 通过这次的项目又再次开阔了我的视野,...

    BlackHole1 评论0 收藏0

发表评论

0条评论

wudengzan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<