mybatisの一括操作、クエリー、更新、挿入
バッチ・クエリー
着信ID照会
複数のid用の文字列「1,2,3,4,」を入力して一括クエリーを行う注意:文字列を入力するときは、文字列配列daoインタフェースに切り分けることを覚えておいてください
mapper
map転送マルチパラメータクエリー
mapper
よびだし
一括挿入
daoインタフェース
mapper
一括更新
mybatisの一括更新は主にforeachラベル接合sqlによって一括操作を実現する.
1つ目の方法はsqlに組み立てることです
第2の方法は、複数のsqlに組み立てる
複数のsqlを組み立てるのはサポートされていません.データベースに接続するurl上で複数のsql制御を開く必要があります.つまり、
もちろんJdbcUrlは複数のsqlを実行するのは安全ではありません.sqlに注入されることに注意してください.
foreach
foreach要素の属性は主にitem,index,collection,open,separator,closeである.itemは、集合内の各要素が反復するときの別名を表す.indexは、反復中に反復するたびに反復する位置を表す名前を指定する.Openはその文がどのように始まるかを表し、separatorは反復するたびにどのような記号を区切り記号とするかを表す.closeは何で終わるかを表す.
foreachを使用するときに最も重要でエラーが発生しやすいのはcollectionプロパティです.このプロパティは指定する必要がありますが、場合によっては値が異なります.主に3つのケースがあります.1.単一パラメータでパラメータタイプがリストである場合、collection属性値はlist 2となる.単一パラメータでパラメータタイプがarray配列である場合、collectionの属性値はarray 3となる.入力されたパラメータが複数の場合は、1つのMapにカプセル化する必要があります.もちろん、単一のパラメータもmapにカプセル化することができます.実際には、パラメータを入力するときにbreastの中でも1つのMapにカプセル化されます.mapのkeyはパラメータ名です.そのため、collection属性値は、入力されたListまたはarrayオブジェクトが自分のカプセル化されたmapの中にあるkeyです.
着信ID照会
複数のid用の文字列「1,2,3,4,」を入力して一括クエリーを行う注意:文字列を入力するときは、文字列配列daoインタフェースに切り分けることを覚えておいてください
List getByIds(String[] ids);
mapper
<select id="getByIds" parameterType="java.util.Arrays" resultMap="situationMap">
SELECT *
FROM situation s
WHERE s.id in
"array" close=")" open="(" separator="," index="index" item="item">
#{item}
select>
map転送マルチパラメータクエリー
List<Alert> getByIds(Map<String, Object> map);
mapper
<select id="getByIds" parameterType="map" resultMap="situationMap">
SELECT *
FROM situation s
WHERE s.id in
"index" item="item" open="(" separator="," close=")" collection="ids">
#{item}
よびだし
: map key foreach collection value
Map<String,Object> map = new HashMap<>();
map.put("ids", ids.toString().split(","));
getByIds(map);
一括挿入
daoインタフェース
void batchCreateRelation(List<CmdbxxxRelation> list);
mapper
"batchCreateRelation" parameterType="java.util.List">
INSERT INTO cmdb_xxx_relation(
source_type,
source_target,
dest_type,
dest_target,
dest_name,
relation_type,
relation_direction)
VALUES
"list" item="item" index="index"
separator=",">
(
#{item.sourceType},
#{item.sourceTarget},
#{item.destType},
#{item.destTarget},
#{item.destName},
#{item.relationType},
#{item.relationDirection}
)
一括更新
mybatisの一括更新は主にforeachラベル接合sqlによって一括操作を実現する.
1つ目の方法はsqlに組み立てることです
id="batchUpdateRawEventStatus" parameterType="java.util.List">
update raw_event
set status = 1
where id in
"list" item="item" index="index" open="(" close=")" separator=",">
${item.id}
第2の方法は、複数のsqlに組み立てる
複数のsqlを組み立てるのはサポートされていません.データベースに接続するurl上で複数のsql制御を開く必要があります.つまり、
allowMultiQueries=true
もちろんJdbcUrlは複数のsqlを実行するのは安全ではありません.sqlに注入されることに注意してください.
id="batchUpdateRawEventStatus" parameterType="java.util.List">
"list" item="item" index="index" open="" close="" separator=";">
update raw_event set status = 1 where id = ${item.id}
foreach
foreach要素の属性は主にitem,index,collection,open,separator,closeである.itemは、集合内の各要素が反復するときの別名を表す.indexは、反復中に反復するたびに反復する位置を表す名前を指定する.Openはその文がどのように始まるかを表し、separatorは反復するたびにどのような記号を区切り記号とするかを表す.closeは何で終わるかを表す.
foreachを使用するときに最も重要でエラーが発生しやすいのはcollectionプロパティです.このプロパティは指定する必要がありますが、場合によっては値が異なります.主に3つのケースがあります.1.単一パラメータでパラメータタイプがリストである場合、collection属性値はlist 2となる.単一パラメータでパラメータタイプがarray配列である場合、collectionの属性値はarray 3となる.入力されたパラメータが複数の場合は、1つのMapにカプセル化する必要があります.もちろん、単一のパラメータもmapにカプセル化することができます.実際には、パラメータを入力するときにbreastの中でも1つのMapにカプセル化されます.mapのkeyはパラメータ名です.そのため、collection属性値は、入力されたListまたはarrayオブジェクトが自分のカプセル化されたmapの中にあるkeyです.