Первичный ключ myBatis последней вставки в MariaDB установлен в параметре typeType для вставки. Надежное поведение? - PullRequest
0 голосов
/ 12 марта 2020

Просматривая, как получить первичный ключ последней вставки с помощью «SELECT LAST_INSERT_ID ()» (которую я не смог запустить - я получаю только количество вставок), я обнаружил следующее: я использую класс, описывающий столбцы таблицы для вставки. Одним из атрибутов этого класса является первичный ключ. Для вставки это не используется, потому что первичный ключ автоинкрементирован. Но после вставки он содержит, в моем случае, новый первичный ключ.

Образец:

public class AbsenceJournalType {
    protected long primaryKey;
    @XmlElement(required = true)
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar timestamp;
    @XmlElement(required = true)
    protected String employeeId;
    @XmlElement(required = true)
    protected String authorizer;

Картограф описывает вставку так:

    <insert id="insertAbsence"
        parameterType="de.gombers.timetracker.shared.dto.AbsenceJournalType">
        INSERT INTO `app_absence_journal`
        (
        `timestamp`, `employeeId`,
        `authorizer`, 
`
        )
        VALUES( #{timestamp,
        javaType=javax.xml.datatype.XMLGregorianCalendar, jdbcType=DATE,
        typeHandler=de.gombers.timetracker.shared.ibatis.CustomDateTypeHandler},
        #{employeeId},
        #{authorizer},

Таблица определена так:

CREATE TABLE `app_absence_journal` (
    `primaryKey` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
    `timestamp` DATETIME NOT NULL COMMENT 'timestamp when edited',
    `employeeId` VARCHAR(50) NOT NULL COMMENT 'referenced person - MasterData ID',
    `authorizer` VARCHAR(50) NULL DEFAULT NULL COMMENT 'authorizers Master Data ID',

Я определил сопоставление столбцов с классом, хотя здесь оно не используется со вставкой:

<resultMap id="AbsenceJournalTypeMap"
    type="de.gombers.timetracker.shared.dto.AbsenceJournalType">
    <result property="ajid" column="ajid" />
    <result property="timestamp" column="timestamp"
        typeHandler="de.gombers.timetracker.shared.ibatis.CustomDateTypeHandler" />
    <result property="employeeId" column="employeeid" />

После вставки поле primaryKey содержит правильный автоинкрементированный primaryKey. Интересно, это надежное поведение? Кто-нибудь знает? Я не нашел ни одной записи, упоминающей это.

...