MyBatis FAQ のまとめ
<mapper namespace="对应于Dao层的接口名称"></mapper>
SQL ステートメントの正しい形式
入れる
INSERT
INTO table_name
(column1, column2,...columnN)
VALUES ( value1, value2,...valueN )
mybatis->挿入
xml の構文形式は、 sql の
insert タグに似ています: これは挿入を意味します。デフォルトの戻り値はデータベースの影響を受ける行数であるため、
mybatisでは戻り値の型を特に宣言する必要はありません。: テストでフィールドを埋めるための判定条件、if それが満たされた場合、SQL ステートメントは if タグ内のフィールドを結合します。それ以外の場合は、
trim タグは結合されません。 : このタグは、必要なフィールドを結合するために使用されます
接頭辞これは接頭辞を意味します。たとえば、次の挿入ステートメントでは、既に table_name に挿入されています。次に、接頭辞の結合として (を追加します) が必要です。
サフィックスこれは、(, 必要) を伴うサフィックスを意味するため、最後に **)** を置き、必要なデータベース フィールドを中央に置きます。
サフィックスオーバーライドifタグ内の判定条件が空の場合、suffixOverridesタグ内に埋められた冗長なsuffix内容が削除されます(最後の1つまたは複数のifタグ内のフィールドがifタグの判定条件を満たしていない場合のみ) jdbcType
:データベース内のフィールドのタイプ
<insert id="对应方法名" parameterType="java中所对应的参数类型">
insert into table_name
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="后端字段名1 != null">
数据库字段名称1,
</if>
<if test="后端字段名2 != null">
数据库字段名称2
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrieds=",">
<if test="后端字段名1 != null">
#{后端字段名1,jdbcType=VARCHAR}
</if>
<if test="后端字段名2 != null">
#{后端字段名2,jdbcType=VARCHAR}
</if>
</trim>
</insert>
消去
DELETE
FROM table_name
where
table_name.var1='字符串1'
and table_name.var2='字符串2'
mybatis->削除
delete のデフォルトの戻り値は、影響を受けるデータベース行の数であるため、戻り値の型を記述する必要はありません。
注:
削除では、条件が空かどうかを明確に判断する必要があります。空の場合は、テーブル内のすべてのフィールドが削除される可能性があります。 .
削除条件が 1 つしかない場合、delete は if タグと一緒に使用できません。一緒に使用すると、エラーが報告されます。delete
の where ステートメントの接続子が and であることを忘れないでください。接頭辞と接尾辞は、トリム タグは、トリム タグに含まれるコンテンツの大部分の先頭と末尾で結合されているため、削除では と は使用できません
<delete id="对应方法名" parameterType="java中所对应的参数类型">
delete
from table_name
where
<trim suffixOverrieds="and">
<if test="后端字段名1 != null">
数据库字段名称1=#{后端字段名1,jdbcType=VARCHAR} and
</if>
<if test="后端字段名2 != null">
数据库字段名称2=#{后端字段名2,jdbcType=VARCHAR}
</if>
</trim>
</delete>
選択する
SELECT col1,col2,col3
FROM table_name
WHERE 条件
[group by column]
[having 条件]
[order by DESC]
[limit 条件]
mybatis->選択
resultMap タグ: 結果セット
id : select ステートメントの resultMap 属性に配置できる resultMap の一意の識別子 resultMap の
id : これには、対応するテーブル (この) の主キーが含まれます
resultMap 内の関連付け: このラベルは、新しいオブジェクト (つまり、オブジェクト内のオブジェクト) をネストするために使用されます
注:
戻り値にオブジェクトのオブジェクトが含まれる場合、2 層の resultMap の戻り値に問題が発生する可能性があることに注意してください。 2 つのデータが
ある場合、外側の層のオブジェクトの対応する内容がまったく同じであれば、内側のオブジェクトの内容が異なっていても、1 つのデータのみが返されることに注意してください。解決策
:
1. 外部オブジェクトに対応する戻り値を変更し、resultMap に主キーを追加しますが、バックエンド エンティティ クラスは主キー フィールドに対応する属性を書き込みません。
<select id="对应方法名" parameterType="java中所对应的参数类型" resultMap="要调用的resultMap的名字">
select
from table_name
where
<trim suffixOverrieds="and">
<if test="后端字段名1 != null">
数据库字段名称1=#{后端字段名1,jdbcType=VARCHAR} and
</if>
<if test="后端字段名2 != null">
数据库字段名称2=#{后端字段名2,jdbcType=VARCHAR}
</if>
</trim>
</select>
<resultMap id="这个resultMap的唯一标识" type="对应的结果类型">
<id column="" jdbcType=""/>
<result column="" jdbcType=""/>
<result column="strVar" jdbcType="VARCHAR" property="url"/>
<result column="timeVar" jdbcType="TIMESTAMP" property="createTime"/>
<result column="jsonObjectVar"
typeHandler="com.hisense.higw.message.config.json.ObjectJsonHandler"
jdbcType="VARCHAR"
property="dataPackage"/>
<association javaType= "大对象中的小对象"
property="后台参数名"
resultMap="这个小对象所对应的resultMap的id"
/>
</resultMap>
<resultMap id="这个resultMap的唯一标识" type="对应的结果类型">
<id column="" jdbcType=""/>
<result column="" jdbcType=""/>
</resultMap>