Sql Code Generate

透過native 產生相關物件

目的

通常複雜查詢對於ORM資料庫工具,常常不容易使用, 因此常常需要使用複雜sql 產生 po 與 mapper程式, 透過該程式可簡化物件產生

PO

/**
 *  2023-03-23 generate 說明SQL:select s.*,to_char(sysdate,'HH24') time, sysdate  from syscode s where 
 *  type_id=?
 */
public class SampleDTO
    implements Serializable
{
    private String typeId;
    private String codeId;
    private String codeData1;
    private String codeData2;
    private String codeData3;
    private String codeData4;
    private String time;
    private Timestamp sysdate;

    public void setTypeId(String typeId) {
        this.typeId = typeId;
    }

    public String getTypeId() {
        return typeId;
    }

    public void setCodeId(String codeId) {
        this.codeId = codeId;
    }

    public String getCodeId() {
        return codeId;
    }

    public void setCodeData1(String codeData1) {
        this.codeData1 = codeData1;
    }

    public String getCodeData1() {
        return codeData1;
    }

    public void setCodeData2(String codeData2) {
        this.codeData2 = codeData2;
    }

    public String getCodeData2() {
        return codeData2;
    }

    public void setCodeData3(String codeData3) {
        this.codeData3 = codeData3;
    }

    public String getCodeData3() {
        return codeData3;
    }

    public void setCodeData4(String codeData4) {
        this.codeData4 = codeData4;
    }

    public String getCodeData4() {
        return codeData4;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getTime() {
        return time;
    }

    public void setSysdate(Timestamp sysdate) {
        this.sysdate = sysdate;
    }

    public Timestamp getSysdate() {
        return sysdate;
    }
}
public class SampleMapper {
    private final JdbcOperations jdbcOperations;

    public SampleMapper(JdbcOperations jdbcOperations) {
        this.jdbcOperations = jdbcOperations;
    }

    private static io.github.h8000572003.domain.SampleDTO to(ResultSet rs, int index) {
        io.github.h8000572003.domain.SampleDTO po = new io.github.h8000572003.domain.SampleDTO();
        try {
            po.setTypeId(rs.getString(SampleMapper.SampleDTOColumn.TYPE_ID.name()));
            po.setCodeId(rs.getString(SampleMapper.SampleDTOColumn.CODE_ID.name()));
            po.setCodeData1(rs.getString(SampleMapper.SampleDTOColumn.CODE_DATA1 .name()));
            po.setCodeData2(rs.getString(SampleMapper.SampleDTOColumn.CODE_DATA2 .name()));
            po.setCodeData3(rs.getString(SampleMapper.SampleDTOColumn.CODE_DATA3 .name()));
            po.setCodeData4(rs.getString(SampleMapper.SampleDTOColumn.CODE_DATA4 .name()));
            po.setTime(rs.getString(SampleMapper.SampleDTOColumn.TIME.name()));
            po.setSysdate(rs.getTimestamp(SampleMapper.SampleDTOColumn.SYSDATE.name()));
            return po;
        } catch (final SQLException ex) {
            throw new RuntimeException("error", ex);
        }
    }

    private String getSql() {
        final StringBuilder builder = new StringBuilder();
        builder.append("select s.*,to_char(sysdate,'HH24') time, sysdate  from syscode s where  ");
        builder.append(" type_id=? ");
        return builder.toString();
    }

    public List<io.github.h8000572003.domain.SampleDTO> query() {
        final List<Object> list = new ArrayList();
        list.add("//TODO");
        return jdbcOperations.query(getSql(), list.toArray(), SampleMapper::to);
    }

    public enum SampleDTOColumn {
        TYPE_ID,
        CODE_ID,
        CODE_DATA1,
        CODE_DATA2,
        CODE_DATA3,
        CODE_DATA4,
        TIME,
        SYSDATE;
    }
}

Last updated

Was this helpful?