go back..

Mybatis 정수 타입일 때 If 조건문 주의

mybatis

어느 날 일어난 장애

<if test="identityNo != null AND identityNo neq ''.toString()">
   AND identityNo = ...
</if>

0인데 왜 저 조건에 걸렸을까?

Mybatis에서 테스트 코드 작성

package org.apache.ibatis.builder.xml.dynamic

class ExpressionEvalulatorTest {

    @Test
    void compareLong() {
        class TestBO {
            public long identityNo = 0L;
        }

        assertFalse(evaluator.evaluateBoolean("identityNo == null",
        new TestBO()));

        assertTrue(evaluator.evaluateBoolean("identityNo != null",
        new TestBO()));

        assertTrue(evaluator.evaluateBoolean("identityNo eq ''.toString()",
            new TestBO()));

        assertFalse(evaluator.evaluateBoolean("identityNo neq ''.toString()",
        new TestBO()));

    }

}

값을 비교하는 로직

느낀점


© 2023 Hyejin   •  Powered by Soopr   •  Theme  Moonwalk