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、コード例

<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のマルチパラメータの伝達内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。