Вставьте long как NULL в столбец bigint в PostgreSQL, используя Java и MyBatis - PullRequest
0 голосов
/ 12 марта 2019

У меня есть POJO с полем long portNumber. Во время создания этого поля по умолчанию используется значение 0, если оно не установлено. Это сопоставляется с уникальным столбцом и в базе данных. Я использую mybatis xml для своего слоя базы данных. Как я могу вставить portNumber как NULL, если для него установлено значение 0?

Я использую JDBC в качестве драйвера базы данных для моей базы данных PostgreSQL.

Класс

class MyPojo {
    long portNumber;
    long id;

    public MyPojo(long portNumber) {
        this.portNumber = portNumber;
    }
}

Оператор вставки XML

<insert id="insert" parameterType="MyPojo" useGeneratedKeys="true" keyColumn="primary_key"
        keyProperty="id">
    INSERT INTO some_table (port_number)
    VALUES (#{portNumber})
</insert>

1 Ответ

0 голосов
/ 12 марта 2019
<insert id="insert" parameterType="MyPojo" useGeneratedKeys="true" 
        keyColumn="primary_key" keyProperty="id">
INSERT INTO some_table (port_number)
VALUES (
<dynamic>
    <isEqual property="portNumber" compareValue="0">
    null
</isEqual>
<isNotEqual property="portNumber" compareValue="0">
    #portNumber#    
</isNotEqual>
</dynamic>
)
</insert>
...