mybatisのinsertキーID取得とマルチパラメータ転送のコード例
一、挿入データマスタID取得
一般的に私たちは業務開発をする時、一つのデータを挿入して、データを挿入するIDを使うことがよくあります。先に検索に挿入するともう一度検索する必要があります。あまりにも効率が悪いです。したがって、mybatisは挿入データを提供して、メインキーIDに戻る方式もあります。次のとおりです
1、Insert/udate
1.1、属性解釈
keyProperty
selectKey文の結果が設定されるべきターゲット属性。生成した複数の列を求める場合は、カンマ区切りの属性名のリストでも良いです。
レスリングType
結果の種類。MyBatisは通常推計できますが、さらに確定するために書いても大丈夫です。MyBatisは、任意の単純なタイプをプライマリキーとして使用することができます。文字列を含めて。複数の生成された列に作用することを望むなら、所望の属性を含むObjectまたはMapを使用することができる。
order
これはBEFOREEまたはAFTERに設定できる。BEFOREEに設定すると、まずキーを選択し、keyPropertyを設定して挿入文を実行します。AFTERに設定すると、挿入文を先に実行して、メインキーフィールドを取得します。mysqlデータベースは成長方式orderからAfterに設定されています。oracleデータベースはsequnceを通じてメインキーorderを取得してBeforeに設定します。
注意:自己成長番号は、単純な行数+1ではなく、シーケンス番号の最大値+1です。現在の10000本のデータですが、メインキーIDは12000までで、12001に戻ります。10001ではありません。
1.2、コード例
2、selectKey
1.1、属性解釈
keyProperty
selectKey文の結果が設定されるべきターゲット属性。生成した複数の列を求める場合は、カンマ区切りの属性名のリストでも良いです。
レスリングType
結果の種類。MyBatisは通常推計できますが、さらに確定するために書いても大丈夫です。MyBatisは、任意の単純なタイプをプライマリキーとして使用することができます。文字列を含めて。複数の生成された列に作用することを望むなら、所望の属性を含むObjectまたはMapを使用することができる。
order
これはBEFOREEまたはAFTERに設定できる。BEFOREEに設定すると、まずキーを選択し、keyPropertyを設定して挿入文を実行します。AFTERに設定すると、挿入文を先に実行して、メインキーフィールドを取得します。mysqlデータベースは成長方式orderからAfterに設定されています。oracleデータベースはsequnceを通じてメインキーorderを取得してBeforeに設定します。
1.2、コード例
1、mapを使ってパラメータを渡す;
特徴:可読性が悪く、メンテナンス性と拡張性の差を引き起こし、使用を根絶する。
コードの例
1、xml
特徴:直観的で明瞭で、パラメータが少ない時、普通は5つより小さい時、使用することを提案します。
コードの例
1、xml
特徴:パラメータが5つ以上の場合、使用を推奨します。
コードの例
1、xml
一般的に私たちは業務開発をする時、一つのデータを挿入して、データを挿入するIDを使うことがよくあります。先に検索に挿入するともう一度検索する必要があります。あまりにも効率が悪いです。したがって、mybatisは挿入データを提供して、メインキーIDに戻る方式もあります。次のとおりです
1、Insert/udate
1.1、属性解釈
keyProperty
selectKey文の結果が設定されるべきターゲット属性。生成した複数の列を求める場合は、カンマ区切りの属性名のリストでも良いです。
レスリングType
結果の種類。MyBatisは通常推計できますが、さらに確定するために書いても大丈夫です。MyBatisは、任意の単純なタイプをプライマリキーとして使用することができます。文字列を含めて。複数の生成された列に作用することを望むなら、所望の属性を含むObjectまたはMapを使用することができる。
order
これはBEFOREEまたはAFTERに設定できる。BEFOREEに設定すると、まずキーを選択し、keyPropertyを設定して挿入文を実行します。AFTERに設定すると、挿入文を先に実行して、メインキーフィールドを取得します。mysqlデータベースは成長方式orderからAfterに設定されています。oracleデータベースはsequnceを通じてメインキーorderを取得してBeforeに設定します。
注意:自己成長番号は、単純な行数+1ではなく、シーケンス番号の最大値+1です。現在の10000本のデータですが、メインキーIDは12000までで、12001に戻ります。10001ではありません。
1.2、コード例
<insert id="insert1" parameterType="TUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user (id, userName, realName,
sex, mobile,
email,
note, position_id)
values (#{id,jdbcType=INTEGER},
#{userName,jdbcType=VARCHAR},
#{realName,jdbcType=VARCHAR},
#{sex,jdbcType=TINYINT}, #{mobile,jdbcType=VARCHAR},
#{email,jdbcType=VARCHAR},
#{note,jdbcType=VARCHAR},
#{position.id,jdbcType=INTEGER})
</insert>
この挿入コマンドは、メインキーを取り出してIDフィールドで受信します。2、selectKey
1.1、属性解釈
keyProperty
selectKey文の結果が設定されるべきターゲット属性。生成した複数の列を求める場合は、カンマ区切りの属性名のリストでも良いです。
レスリングType
結果の種類。MyBatisは通常推計できますが、さらに確定するために書いても大丈夫です。MyBatisは、任意の単純なタイプをプライマリキーとして使用することができます。文字列を含めて。複数の生成された列に作用することを望むなら、所望の属性を含むObjectまたはMapを使用することができる。
order
これはBEFOREEまたはAFTERに設定できる。BEFOREEに設定すると、まずキーを選択し、keyPropertyを設定して挿入文を実行します。AFTERに設定すると、挿入文を先に実行して、メインキーフィールドを取得します。mysqlデータベースは成長方式orderからAfterに設定されています。oracleデータベースはsequnceを通じてメインキーorderを取得してBeforeに設定します。
1.2、コード例
<insert id="insert2" parameterType="TUser">
<selectKey keyProperty="id" order="AFTER" resultType="int">
select
LAST_INSERT_ID()
</selectKey>
insert into t_user (id, userName, realName,
sex, mobile,
email,
note,
position_id)
values (#{id,jdbcType=INTEGER},
#{userName,jdbcType=VARCHAR},
#{realName,jdbcType=VARCHAR},
#{sex,jdbcType=TINYINT}, #{mobile,jdbcType=VARCHAR},
#{email,jdbcType=VARCHAR},
#{note,jdbcType=VARCHAR},
#{position.id,jdbcType=INTEGER})
</insert>
二、複数のパラメータがどうやって入ってくるかを調べる。1、mapを使ってパラメータを渡す;
特徴:可読性が悪く、メンテナンス性と拡張性の差を引き起こし、使用を根絶する。
コードの例
1、xml
<select id="selectByEmailAndSex1" resultMap="BaseResultMap" parameterType="map">
select
<include refid="Base_Column_List" />
from t_user a
where a.email like CONCAT('%', #{email}, '%') and
a.sex =#{sex}
</select>
2、呼び出しレイヤー
Map<String, Object> params = new HashMap<String, Object>();
params.put("email", email);
params.put("sex", sex);
List<TUser> list1 = mapper.selectByEmailAndSex1(params);
System.out.println(list1.size());
2、注解伝達パラメータを使用する。特徴:直観的で明瞭で、パラメータが少ない時、普通は5つより小さい時、使用することを提案します。
コードの例
1、xml
<select id="selectByEmailAndSex2" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_user a
where a.email like CONCAT('%', #{email}, '%') and
a.sex = #{sex}
</select>
2、呼び出しレイヤー
Page<TUser> startPage = PageHelper.startPage(2, 3);
List<TUser> list2 = mapper.selectByEmailAndSex2(email, sex);
System.out.println(list2.size());
3、Java Beanを使用してパラメータを伝達する。特徴:パラメータが5つ以上の場合、使用を推奨します。
コードの例
1、xml
<select id="selectByEmailAndSex3" resultMap="BaseResultMap"
parameterType="com.enjoylearning.mybatis.entity.EmailSexBean">
select
<include refid="Base_Column_List" />
from t_user a
where a.email like CONCAT('%', #{email}, '%') and
a.sex = #{sex}
</select>
2、呼び出しレイヤー
EmailSexBean esb = new EmailSexBean();
esb.setEmail(email);
esb.setSex(sex);
List<TUser> list3 = mapper.selectByEmailAndSex3(esb);
System.out.println(list3.size());
ここで、mybatisのinsertキーIDの取得とマルチパラメータ転送のコード例についての記事を紹介します。これに関連して、mybatisのマルチパラメータの伝達内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。