// Path: src/test/java/com/github/mjdbc/test/asset/model/GetterBean.java
// public class GetterBean {
// 
//     private long id;
// 
//     private boolean booleanField;
// 
//     private int intField;
// 
//     private String stringField;
// 
//     private DbIntValue intValueField;
// 
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public boolean isBooleanField() {
//         return booleanField;
//     }
// 
//     public void setBooleanField(boolean booleanField) {
//         this.booleanField = booleanField;
//     }
// 
//     public int getIntField() {
//         return intField;
//     }
// 
//     public void setIntField(int intField) {
//         this.intField = intField;
//     }
// 
//     public String getStringField() {
//         return stringField;
//     }
// 
//     public void setStringField(String stringField) {
//         this.stringField = stringField;
//     }
// 
//     public DbIntValue getIntValueField() {
//         return intValueField;
//     }
// 
//     public void setIntValueField(DbIntValue intValueField) {
//         this.intValueField = intValueField;
//     }
// 
//     /**
//      * Class to create User object from result set.
//      */
//     @Mapper
//     public static final DbMapper<GetterBean> MAPPER = (r) -> {
//         GetterBean res = new GetterBean();
//         res.id = r.getInt("id");
//         res.booleanField = r.getBoolean("boolean_field");
//         res.intField = r.getInt("int_field");
//         res.stringField = r.getString("string_field");
//         res.intValueField = new DbIntValue(r.getInt("int_value_field"));
//         return res;
//     };
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/sql/GetterBeanSql.java
// public interface GetterBeanSql {
// 
//     @Sql("INSERT INTO bean(boolean_field, int_field, string_field, int_value_field) " +
//             "VALUES(:booleanField, :intField, :stringField, :intValueField)")
//     @GetGeneratedKeys
//     long insert(@BindBean GetterBean bean);
// 
//     @Sql("UPDATE bean SET boolean_field = :booleanField, int_field = :intField, string_field = :stringField, int_value_field = :intValueField " +
//             "WHERE id = :id")
//     void update(@BindBean GetterBean bean);
// 
//     @Sql("SELECT * FROM bean WHERE id = :id")
//     GetterBean get(@Bind("id") long id);
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/types/DbIntValue.java
// public class DbIntValue extends AbstractDbInt {
//     protected int value;
// 
//     public DbIntValue(int value) {
//         this.value = value;
//     }
// 
//     public final int getDbValue() {
//         return value;
//     }
// 
//     public String toString() {
//         return getClass().getSimpleName() + "[" + value + "]";
//     }
// }


import com.github.mjdbc.test.asset.model.GetterBean;
import com.github.mjdbc.test.asset.sql.GetterBeanSql;
import com.github.mjdbc.test.asset.types.DbIntValue;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;

        GetterBean fromDb = sql.get(id);

        assertEquals(original.isBooleanField(), fromDb.isBooleanField());
        assertEquals(original.getIntField(), fromDb.getIntField());
        assertEquals(original.getStringField(), fromDb.getStringField());
        assertEquals(original.getIntValueField(), fromDb.getIntValueField());
    }

    @NotNull
    private GetterBean createBean() {
        GetterBean original = new GetterBean();
        original.setBooleanField(true);
        original.setIntField(10);
        original.setStringField("20");
        original.setIntValueField(new DbIntValue(30));
        return original;
    }

    @Test
    public void checkUpdateWithGetter() {
        GetterBean original = createBean();

        long id = sql.insert(original);
        assertTrue(id > 0);

        original.setId(id);
        original.setBooleanField(false);
        original.setIntField(40);
        original.setStringField("50");
// Path: src/test/java/com/github/mjdbc/test/asset/model/GetterBean.java
// public class GetterBean {
// 
//     private long id;
// 
//     private boolean booleanField;
// 
//     private int intField;
// 
//     private String stringField;
// 
//     private DbIntValue intValueField;
// 
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public boolean isBooleanField() {
//         return booleanField;
//     }
// 
//     public void setBooleanField(boolean booleanField) {
//         this.booleanField = booleanField;
//     }
// 
//     public int getIntField() {
//         return intField;
//     }
// 
//     public void setIntField(int intField) {
//         this.intField = intField;
//     }
// 
//     public String getStringField() {
//         return stringField;
//     }
// 
//     public void setStringField(String stringField) {
//         this.stringField = stringField;
//     }
// 
//     public DbIntValue getIntValueField() {
//         return intValueField;
//     }
// 
//     public void setIntValueField(DbIntValue intValueField) {
//         this.intValueField = intValueField;
//     }
// 
//     /**
//      * Class to create User object from result set.
//      */
//     @Mapper
//     public static final DbMapper<GetterBean> MAPPER = (r) -> {
//         GetterBean res = new GetterBean();
//         res.id = r.getInt("id");
//         res.booleanField = r.getBoolean("boolean_field");
//         res.intField = r.getInt("int_field");
//         res.stringField = r.getString("string_field");
//         res.intValueField = new DbIntValue(r.getInt("int_value_field"));
//         return res;
//     };
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/sql/GetterBeanSql.java
// public interface GetterBeanSql {
// 
//     @Sql("INSERT INTO bean(boolean_field, int_field, string_field, int_value_field) " +
//             "VALUES(:booleanField, :intField, :stringField, :intValueField)")
//     @GetGeneratedKeys
//     long insert(@BindBean GetterBean bean);
// 
//     @Sql("UPDATE bean SET boolean_field = :booleanField, int_field = :intField, string_field = :stringField, int_value_field = :intValueField " +
//             "WHERE id = :id")
//     void update(@BindBean GetterBean bean);
// 
//     @Sql("SELECT * FROM bean WHERE id = :id")
//     GetterBean get(@Bind("id") long id);
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/types/DbIntValue.java
// public class DbIntValue extends AbstractDbInt {
//     protected int value;
// 
//     public DbIntValue(int value) {
//         this.value = value;
//     }
// 
//     public final int getDbValue() {
//         return value;
//     }
// 
//     public String toString() {
//         return getClass().getSimpleName() + "[" + value + "]";
//     }
// }


// Path: src/test/java/com/github/mjdbc/test/GetterBeanTest.java
import com.github.mjdbc.test.asset.model.GetterBean;
import com.github.mjdbc.test.asset.sql.GetterBeanSql;
import com.github.mjdbc.test.asset.types.DbIntValue;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;


        GetterBean fromDb = sql.get(id);

        assertEquals(original.isBooleanField(), fromDb.isBooleanField());
        assertEquals(original.getIntField(), fromDb.getIntField());
        assertEquals(original.getStringField(), fromDb.getStringField());
        assertEquals(original.getIntValueField(), fromDb.getIntValueField());
    }

    @NotNull
    private GetterBean createBean() {
        GetterBean original = new GetterBean();
        original.setBooleanField(true);
        original.setIntField(10);
        original.setStringField("20");
        original.setIntValueField(new DbIntValue(30));
        return original;
    }

    @Test
    public void checkUpdateWithGetter() {
        GetterBean original = createBean();

        long id = sql.insert(original);
        assertTrue(id > 0);

        original.setId(id);
        original.setBooleanField(false);
        original.setIntField(40);
        original.setStringField("50");
        original.setIntValueField(new DbIntValue(60));