表映射
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: mysql | Oracle | 说明 |
---|---|---|---|---|
IntegerColumn | Integer | INTEGER | ||
FloatColumn | Float | FLOAT | ||
DoubleColumn | Double | DOUBLE | ||
DecimalColumn | java.math.BigDecimal | DECIMAL | ||
StringColumn | String | VARCHAR | ||
DateColumn | java.time.LocalDate | DATE | ||
DateTimeColumn | java.time.LocalDateTime | TIME | ||
TimeColumn | java.time.LocalTime | TIME_WITH_TIMEZONE | ||
TimestampColumn | java.sql.Timestamp | TIMESTAMP | ||
BlobColumn | byte[] | BLOB | ||
ClobColumn | String | CLOB |
所有的列类型都继承自 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个字符。