Java web開発でMyBatisを使用してデータベースに挿入してプライマリ・キーを返す方法の紹介


1、先に挿入してから照会する(効率が低い)
`User user = new User();  
user.setUserName("chenzhou");  
user.setPassword("xxxx");  
user.setComment("            ");  
System.out.println("      :"+user.getUserId());  
userDao.insertAndGetId(user);//      
User myUser=userDao.findUserByName(user.getName());
System.out.println("      :"+myUser.getUserId());  `

2、エンティティクラスのマッピングファイル「*Mapper.xml」の設定でメインキーを返す:(推奨)
"insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User">
    insert into user(userName,password,comment)
    values(#{userName},#{password},#{comment})
useGeneratedKeys="true"           
keyProperty="userId"          Id        userId  。
parameterType="com.chenzhou.mybatis.User"    resultType  ,    。

    uerId   getter() and setter();   

3、MySQLデータベースでテーブルを作成するときにフィールドの自己成長が設定されている場合、エンティティークラスのマッピングファイル「*Mapper.xml」には、次のように書きます.(推奨)
    
<insert id="insertProduct" parameterType="domain.model.ProductBean" >
    <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="productId">
       SELECT LAST_INSERT_ID()
   selectKey>
     INSERT INTO t_product(productName,productDesrcible,merchantId)values(#{productName},#{productDesrcible},#{merchantId});
 insert>
    resultType  ,        。

order="AFTER"          ,         。

      BEFORE   AFTER。

      BEFORE,          ,   keyProperty         。

      AFTER,         ,    selectKey   -    Oracle      ,              
keyProperty="userId"          Id        userId  。

SELECT LAST_INSERT_ID()   MySQL                Id.

    uerId   getter() and setter();