• 售前

  • 售后

热门帖子
入门百科

mybatis使用oracle举行添加数据的方法

[复制链接]
白刃玄衣及 显示全部楼层 发表于 2021-8-14 15:02:43 |阅读模式 打印 上一主题 下一主题
  本次博主主要举行oralce数据库开辟,好久不消oracle,有许多知识点也忘的差不多了,本次主要是复习一下工作中主要使用的一些sql语句编写;
查询

查询语句都是正常的,但是需要留意的是oracle数据库在查询的时候,表名使用别名的时候,请不要使用as关键字,只有mysql数据库才可以使用,oracle只支持字段名别名可以使用as关键字。
  增加

  添加数据的时候,我们后台很大概使用到添加后的主键id,此时也跟mysql不一样,mybatis只要设置一下insert属性就可以了,好比:
  1. <insert id="add" keyProperty="receiptId" useGeneratedKeys="true">
复制代码
  但是如许不支持oracle,由于oracle没有自增的主键,只能自己依靠自己定义的自增序列来为主键id赋值;前提是需要知道序列名,好比:
  1. <insert id="add">
  2.         <selectKey  keyProperty="receiptId" resultType="long" order="BEFORE">
  3.             select SEQ_Table.nextval from dual
  4.         </selectKey>
  5.         insert into SA_0511_1IS(id)values(#{receiptId})
  6. </insert>   
复制代码
  序列是如许创建的:
  1. create sequence SEQ_Table \\序列名
  2. increment by 1  \\步长为1
  3. start with 1 \\从1开始
  4. maxvalue 999999999; \\最大值
复制代码
  如许我们就可以使用我们自定义的序列了
  批量增加时,是不会给主键id赋值的,只能插入,有两种方法:
  第一种,表中没有主键id,都是其他基本信息和外部传进来的关联id,
  1. <insert id="batchAdd">
  2.         insert all
  3.         <foreach collection="entities" item="entity" separator="  " open=" " close=" ">
  4.         into SA_T(
  5.             RECEIPT_ID,GOODS_NAME,
  6.             REG_USR_ID,REG_DT,UPDT_USR_ID,UPDT_DT
  7.         )values
  8.             (#{entity.receiptId},#{entity.goodsName},
  9.             #{entity.regUsrId},#{entity.regDt},#{entity.updtUsrId},#{entity.updtDt})
  10.         </foreach>
  11.         select 1 from dual
  12.     </insert>
复制代码
  第二种:单表添加时,需要根据序列值来增加,用第一种方法是不可行的,好比:
  1. <insert id="batchAdd">
  2.         insert all
  3.         <foreach collection="entities" item="entity" separator="  " open=" " close=" ">
  4.         into SA_T(
  5.             RECEIPT_ID,GOODS_NAME,
  6.             REG_USR_ID,REG_DT,UPDT_USR_ID,UPDT_DT
  7.         )values
  8.             (SEQ_T.nextval,#{entity.goodsName},
  9.             #{entity.regUsrId},#{entity.regDt},#{entity.updtUsrId},#{entity.updtDt})
  10.         </foreach>
  11.         select 1 from dual
  12.     </insert>
复制代码
  如许之后,只会出现都是同一个主键id,而不会是逐渐增加的,以是要用下面这种方式:
  1. <insert id="batchAdd">
  2.         insert
  3.             into SA_0511_1IS(RECEIPT_ID,DEALER_CODE)
  4. select SEQ_SA_0511_1IS.nextval,t.* from (
  5.         <foreach collection="entities" item="entity" separator="union all">
  6. select #{entity.dealerCode} from dual
  7. </foreach>
  8.         )
复制代码
  这是正常的增加,还有一些insert into 。。select。。from如许的从其他表直接查询过来的,也需要留意一下,字段名肯定要一样,由于没有指定那些字段需要被添加,以是要都一样
  1. <insert id="findAndAddByVinNoList">
  2.         insert into SA_T_LOG
  3.         select * from SA_T
  4.         where VIN in
  5.         <foreach collection="entities" item="vin" separator="," open="(" close=")" >
  6.             #{vin}
  7.         </foreach>
  8.     </insert>
复制代码
  剩下的就是业务逻辑了,本人就不关注了。知识都是需要自己巩固复习的,要不然会忘的一干二净,刚接触的时候,连序列都忘了是啥了;相称年自己都可以在oracle中声明对象一些骚操纵也都忘了
到此这篇关于mybatis使用oracle举行添加数据的方法的文章就先容到这了,更多相关mybatis oracle添加数据内容请搜索草根技术分享从前的文章或继续欣赏下面的相关文章希望大家以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作