Heim  >  Artikel  >  Java  >  So verwenden Sie Mybatis, um Oracle-Batch-Einfüge- und Paging-Abfragen basierend auf Java zu implementieren

So verwenden Sie Mybatis, um Oracle-Batch-Einfüge- und Paging-Abfragen basierend auf Java zu implementieren

WBOY
WBOYnach vorne
2023-05-03 23:52:051903Durchsuche

1. Einzelne Daten einfügen

Alle einfügen in Der Rückgabewert wird durch die endgültige Auswahl bestimmt:

<!--简单SQL-->
insert into userinfo (USERID, USERNAME, AGE) values(1001,&#39;小明&#39;,20);

<!--Mybatis写法1,有序列,主键是自增ID,主键是序列-->
<insert id="insert" parameterType="com.zznode.modules.bean.UserInfo">
    <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="userid">
      SELECT userinfo_userid_seq.nextval as userid from dual
    </selectKey>
    insert into EPG_ALARM_INFO (USERID, USERNAME, AGE)
    values (#{userid}, #{username}, #{age})
</insert>

<!--Mybatis写法2,无序列,主键是uuid,字符串-->
<insert id="insert" parameterType="com.zznode.modules.bean.UserInfo">
    insert into EPG_ALARM_INFO (USERID, USERNAME, AGE, TIME)
    values (#{userid}, #{username}, #{age}, sysdate)
</insert>
3. Der Minimalwert ist n

    maxvalue n (/nomaxvalue): Der Maximalwert ist n
  • start with n: Beginnen Sie mit dem Zählen ab n
  • Inkrement um n: Erhöhen Sie n jedes Mal
  • cache n ( /nocache): n Sequenzwerte zwischenspeichern/ nicht zwischenspeichern, wenn zwischengespeichert, besteht die Gefahr eines Nummernsprungs
  • noorder (/order): Sequenznummern generieren nicht garantiert Anfragen in der richtigen Reihenfolge
  • Zyklus n (/nocycle): Wenn der Maximalwert n erreicht ist, beginnen Sie erneut mit n
  • currval: Der aktuelle Wert der Sequenz. Die neue Sequenz muss nextval einmal verwenden, um den Wert zu erhalten, andernfalls wird ein Fehler ausgegeben gemeldet werden
  • nextval: stellt den nächsten Wert der Sequenz als Wert dar. Wenn eine neue Sequenz zum ersten Mal verwendet wird, wird der Anfangswert der Sequenz erhalten. Ab der zweiten Verwendung erhöht er sich entsprechend dem eingestellten Schritt
    <!--简单SQL, 方法1-->
    INSERT ALL 
    INTO userinfo (USERID, USERNAME, AGE) values(1001,&#39;小明&#39;,20)
    INTO userinfo (USERID, USERNAME, AGE) values(1002,&#39;小红&#39;,18)
    INTO userinfo (USERID, USERNAME, AGE) values(1003,&#39;张三&#39;,23)
    select 3 from dual;
    <!--简单SQL, 方法2-->
    begin
        insert into userinfo (USERID, USERNAME, AGE) values(1001,&#39;小明&#39;,20);
        insert into userinfo (USERID, USERNAME, AGE) values(1001,&#39;小红&#39;,18);
        insert into userinfo (USERID, USERNAME, AGE) values(1001,&#39;张三&#39;,23);
    end;
    <!--简单SQL, 方法3-->
    insert into userinfo (USERID, USERNAME, AGE) 
    select 1001, &#39;小明&#39;, 20 from dual union all
    select 1002, &#39;小红&#39;, 18 from dual union all
    select 1003, &#39;张三&#39;, 23 from dual
  • 4. Oracle-Paging-Abfrage

    Front-End- und Back-End-Interaktion, Paging-Abfrage
  • Service-Geschäftsimplementierung:

  • <!--Mybatis写法1,无序列-->
    <insert id="insertBatch" parameterType="java.util.List">
        INSERT ALL 
        <foreach collection="list" index="index" item="item">
            INTO userinfo (USERID, USERNAME, AGE)
            VALUES (#{item.userid}, #{item.username}, #{item.age})
        </foreach>
        select list.size from dual
    </insert>
    <!--Mybatis写法2,无序列-->
    <insert id="insertBatch">
        insert into EPG_ALARM_INFO (USERID, USERNAME, AGE)
        <foreach collection="list" item="item" index="index" separator="union all">
            <!-- <foreach collection="list" item="item" index="index" separator="union all" open="(" close=")"> -->
            <!-- (select #{item.userid}, #{item.username}, #{item.age} from dual) -->
            
            <!-- 上面带括号,下面不带括号,都可以,少量数据不带括号效率高 -->
            select #{item.userid}, #{item.username}, #{item.age} from dual
        </foreach>
    </insert>    
    <!--Mybatis写法3,有序列-->
    <insert id="insertBatch">
        insert into EPG_ALARM_INFO (USERID, USERNAME, AGE)
        SELECT userinfo_userid_seq.nextval, m.* FROM (
        <foreach collection="list" item="item" index="index" separator="union all">
            select #{item.username}, #{item.age} from dual
        </foreach>
        ) m
    </insert>

Mapper. Mapper.xml-Datei schreiben

<!--
create sequence 序列名     
       increment by 1 	--每次增加几个,我这里是每次增加1
       start with 1   	--从1开始计数
       nomaxvalue      	--不设置最大值
       nocycle         	--一直累加,不循环
       nocache;        	--不建缓冲区
在插入语句中调用:序列名.nextval  生成自增主键。
-->
<!--创建序列-->
create sequence SEQ_USERINFO
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
nocache;

<!--删除序列-->
drop sequence SEQ_USERINFO

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Mybatis, um Oracle-Batch-Einfüge- und Paging-Abfragen basierend auf Java zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen