Skip to content

表映射

Table是数据库表在Java中的映射,所有对数据库表的操作都是通过操作Table实例完成。

java
@Table("t_prod")
public class ProdTable extends BaseTable {
}
  • 代码所示,类 ProdTable 是表 t_prod 的映射。
  • 基类 BaseTable 封装作用在表上的很多操作,通过这种方式简化 ProdTable 定义的代码量。

列映射

java
@Table("t_prod")
public class ProdTable extends BaseTable {

    public StringColumn prodName;
}
  • public:为了使用方便请用public
  • StringColumn: 在 java 中存放 字符串 数据,一般来说在数据库中对应 varchar2 类型。
  • prodName: 列名。

Column 类型

summer-data 支持如下类型:

列类型值类型JDBCType: mysqlOracle说明
IntegerColumnIntegerINTEGER
FloatColumnFloatFLOAT
DoubleColumnDoubleDOUBLE
DecimalColumnjava.math.BigDecimalDECIMAL
StringColumnStringVARCHAR
DateColumnjava.time.LocalDateDATE
DateTimeColumnjava.time.LocalDateTimeTIME
TimeColumnjava.time.LocalTimeTIME_WITH_TIMEZONE
TimestampColumnjava.sql.TimestampTIMESTAMP
BlobColumnbyte[]BLOB
ClobColumnStringCLOB

所有的列类型都继承自 BaseColumn<T> 类,它封装了的操作。

作用于列上的注解

@ColumnName

当字段名与列名不同时使用 @ColumnName 设定列名

java
@ColumnName("prod_name")
public StringColumn prodName;

表注解处理器

java
@Table("t_prod")
public class ProdTable extends BaseTable {
    public StringColumn prodName;
}

summer-data 使用了 apt(与lombok相同),会在编译过程中对 ProdTable 进行处理,最终编译后的内容如下

java

@Table("t_prod")
public class ProdTable extends BaseTable {

    public StringColumn prodName;

    public static class Entity {
        private String prodName;

        public void setProdName(String prodName) {
            this.prodName = prodName;
        }

        public String getProdName() {
            return this.prodName;
        }
    }
}

如果说 ProdTable 是 t_prod 表,那么 ProdTable.Entity 就是 t_prod 的一条数据。 增删改查操作都是基于 ProdTable 进行的,查询返回数据是 ProdTable.Entity 类型,这是summer-data推荐的使用方式。

insert

Prod t1 = new Prod();
t1.prod_name.setValue("walker");
Integer result = t1.insert();

update

Prod t1 = new Prod();
t1.prod_name.setValue("walker");
Integer result = t1.updateBy(t1.id.eq("123"));

delete

Prod t1 = new Prod();
Integer result = t1.deleteBy(t1.res_id.eq("123"));

注解

@AutoGenerated

IntegerColumn 类型字段,表明这个字段有数据库服务器端自动生成,java代码中无需处理。 StringColumn 类型字段,表明这个字段由summer-data在插入前自动生成,默认使用UUID生成32位字符串。

@MaxLength(100)

StringColumn 类型字段,表明这个字段的长度不超过100个字符。