【MyBatis】-自己増加プライマリ・キーと非自己増加プライマリ・キーの戻り

2158 ワード

mysqlはプライマリ・キーを増やし、insertコミットを実行する前に自動的にプライマリ・キーを生成します.なぜプライマリ・キーに戻るのか、つまり戻るのかは考えずに戻ったのではないでしょうか.いつも役に立つのですが、確かに、次のクエリの根拠になる可能性があります.あるいは、次の挿入された外部キーの証明書に戻る可能性があります.とにかく、戻ってからにしましょう.
実現思想はみそ紫である:mysql関数により挿入されたばかりのレコードの自己増加主キーを取得する:LAST_INSERT_ID()ですが、この関数はinsertの後に呼び出されます.
 
mybatisでは、ユーザーを追加するだけでプライマリ・キーを返すことに関連します.ここにはint型がデータベースで自己増加に設定され、uuid形式の2つのプライマリ・キーがあります.

	 	
	 	
	 		SELECT LAST_INSERT_ID()	
	 	
	 	 	
	 	insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address});
 

自己増加プライマリ・キー方式の実行プロセスは、まずレコードをデータベースに挿入し、データベースがidを自動的に増加させるように設定されていることを前提とし、mysql関数によってinsertに記録されたばかりのプライマリ・キーを得る.
一方、uuidの形式は、uuid()によってプライマリ・キーが最初に得られ、次にプライマリ・キーがuserオブジェクトのid属性に設定され、その後insertが実行されると、userオブジェクトからid属性値が取り出される.
 
	 	 
	 	 
	 		SELECT uuid()	
	 	
	 	
	 	insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address});


この方法は、いわゆる非自己増加プライマリ・キーの戻りであり、テーブル内のidのフィールド・タイプをstringに変更する必要がある.
 
両者は、実行プロセスの反対に、自己増加プライマリ・キーのinsert sql文プライマリ・キーが自動的に生成され、insert文にidフィールドを書く必要がなく、自己増加プライマリ・キーでない場合、insert文にidフィールドを書く必要があります.
mysqlでは、oracleでは次のように異なる関数とorder識別が使用されます.
 
	
			SELECT    .nextval()
	
	insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})