@@ -1406,6 +1406,46 @@ void testUpdate() {
14061406 }
14071407 }
14081408
1409+ @ Test
1410+ void testUpdateValueOrNullWithValue () {
1411+ try (SqlSession sqlSession = sqlSessionFactory .openSession ()) {
1412+ AnimalDataMapper mapper = sqlSession .getMapper (AnimalDataMapper .class );
1413+ AnimalData record = new AnimalData ();
1414+ record .setBodyWeight (2.6 );
1415+
1416+ UpdateStatementProvider updateStatement = update (animalData )
1417+ .set (animalName ).equalToOrNull ("fred" )
1418+ .where (id , isEqualTo (1 ))
1419+ .build ()
1420+ .render (RenderingStrategies .MYBATIS3 );
1421+
1422+ assertThat (updateStatement .getUpdateStatement ()).isEqualTo (
1423+ "update AnimalData set animal_name = #{parameters.p1,jdbcType=VARCHAR} where id = #{parameters.p2,jdbcType=INTEGER}" );
1424+ int rows = mapper .update (updateStatement );
1425+ assertThat (rows ).isEqualTo (1 );
1426+ }
1427+ }
1428+
1429+ @ Test
1430+ void testUpdateValueOrNullWithNull () {
1431+ try (SqlSession sqlSession = sqlSessionFactory .openSession ()) {
1432+ AnimalDataMapper mapper = sqlSession .getMapper (AnimalDataMapper .class );
1433+ AnimalData record = new AnimalData ();
1434+ record .setBodyWeight (2.6 );
1435+
1436+ UpdateStatementProvider updateStatement = update (animalData )
1437+ .set (animalName ).equalToOrNull ((String ) null )
1438+ .where (id , isEqualTo (1 ))
1439+ .build ()
1440+ .render (RenderingStrategies .MYBATIS3 );
1441+
1442+ assertThat (updateStatement .getUpdateStatement ()).isEqualTo (
1443+ "update AnimalData set animal_name = null where id = #{parameters.p1,jdbcType=INTEGER}" );
1444+ int rows = mapper .update (updateStatement );
1445+ assertThat (rows ).isEqualTo (1 );
1446+ }
1447+ }
1448+
14091449 @ Test
14101450 void testInsert () {
14111451 try (SqlSession sqlSession = sqlSessionFactory .openSession ()) {
@@ -1994,6 +2034,61 @@ void testGeneralInsert() {
19942034 }
19952035 }
19962036
2037+ @ Test
2038+ void testGeneralInsertValueOrNullWithValue () {
2039+ try (SqlSession sqlSession = sqlSessionFactory .openSession ()) {
2040+ AnimalDataMapper mapper = sqlSession .getMapper (AnimalDataMapper .class );
2041+
2042+ GeneralInsertStatementProvider insertStatement = insertInto (animalData )
2043+ .set (id ).toValue (101 )
2044+ .set (animalName ).toValueOrNull ("Fred" )
2045+ .set (brainWeight ).toConstant ("2.2" )
2046+ .set (bodyWeight ).toValue (4.5 )
2047+ .build ()
2048+ .render (RenderingStrategies .MYBATIS3 );
2049+
2050+ String expected = "insert into AnimalData (id, animal_name, brain_weight, body_weight) "
2051+ + "values (#{parameters.p1,jdbcType=INTEGER}, #{parameters.p2,jdbcType=VARCHAR}, 2.2, "
2052+ + "#{parameters.p3,jdbcType=DOUBLE})" ;
2053+
2054+ assertThat (insertStatement .getInsertStatement ()).isEqualTo (expected );
2055+ assertThat (insertStatement .getParameters ()).hasSize (3 );
2056+ assertThat (insertStatement .getParameters ()).containsEntry ("p1" , 101 );
2057+ assertThat (insertStatement .getParameters ()).containsEntry ("p2" , "Fred" );
2058+ assertThat (insertStatement .getParameters ()).containsEntry ("p3" , 4.5 );
2059+
2060+ int rows = mapper .generalInsert (insertStatement );
2061+ assertThat (rows ).isEqualTo (1 );
2062+ }
2063+ }
2064+
2065+ @ Test
2066+ void testGeneralInsertValueOrNullWithNull () {
2067+ try (SqlSession sqlSession = sqlSessionFactory .openSession ()) {
2068+ AnimalDataMapper mapper = sqlSession .getMapper (AnimalDataMapper .class );
2069+
2070+ GeneralInsertStatementProvider insertStatement = insertInto (animalData )
2071+ .set (id ).toValue (101 )
2072+ .set (animalName ).toValueOrNull ((String ) null )
2073+ .set (brainWeight ).toConstant ("2.2" )
2074+ .set (bodyWeight ).toValue (4.5 )
2075+ .build ()
2076+ .render (RenderingStrategies .MYBATIS3 );
2077+
2078+ String expected = "insert into AnimalData (id, animal_name, brain_weight, body_weight) "
2079+ + "values (#{parameters.p1,jdbcType=INTEGER}, null, 2.2, "
2080+ + "#{parameters.p2,jdbcType=DOUBLE})" ;
2081+
2082+ assertThat (insertStatement .getInsertStatement ()).isEqualTo (expected );
2083+ assertThat (insertStatement .getParameters ()).hasSize (2 );
2084+ assertThat (insertStatement .getParameters ()).containsEntry ("p1" , 101 );
2085+ assertThat (insertStatement .getParameters ()).containsEntry ("p2" , 4.5 );
2086+
2087+ int rows = mapper .generalInsert (insertStatement );
2088+ assertThat (rows ).isEqualTo (1 );
2089+ }
2090+ }
2091+
19972092 @ Test
19982093 void testUpdateWithSelect () {
19992094 try (SqlSession sqlSession = sqlSessionFactory .openSession ()) {
0 commit comments