とMySQLでのINSERT文で、私はMySQLでのテーブルを持っている:私は次のようにCURRENT_TIMESTAMPにデフォルトのフィールド値を取得する方法、MyBatisの
以下のようにMyBatisのマッパーを持ってCREATE TABLE `mytable` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`phone` VARCHAR(128) NULL DEFAULT NULL,
`createTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=25
;
@Mapper
public interface MyMapper {
Integer insertRecord(List<PhoneModel> list);
}
<insert id="insertRecord" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into mytable(phone) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.phone})
</foreach>
</insert>
PhoneModel
にはid
,phone
,の3つのプロパティがあります。今度はinsertRecord
を呼び出してid
を得ることができますが、createTime
も取得したいと思います。
私はMybatisのdocumentsを使いました。複数のプロパティ名(createTime
など)をkeyProperty
とkeyColumn
に追加することができます。
keyProperty(挿入および更新のみ)getGeneratedKeys、またはinsert文のselectKey子要素から返されるキー値をMyBatisが設定するプロパティを指定します。デフォルト:unset。複数の生成された列が予想される場合は、のコンマで区切られたプロパティー名のリストを指定できます。
keyColumn(挿入および更新のみ)生成されたキーを使用して、テーブル内の列の名前を設定します。これは、特定のデータベース(PostgreSQLなど)では、キー列がテーブルの最初の列でない場合にのみ必要です。可能な複数の生成された列がある場合、カンマで区切られた列のリストの名前はとなります。
私は明確ではないカンマ区切りのプロパティ/列名のリストを意味します。私はkeyProperty = "id、createTime"を試しましたが、動作していないようです。
ありがとうございました。