Entity定义
最简单的定义:
继承Korm的EntityBase,
为了简化写法,使用了kotlin委托属性,即属性的Delegated
class User : EntityBase() {
@delegate:Id var id: String? by korm()
var name: String? by korm()
var age: Int ? by korm()
}
提供全面功能的定义
@DataSource("prod-db")
@Table(name = "Test_Book")
class TestBook : EntityBase() {
@delegate:AutoID var testId: String? by korm()
@delegate:Comment("测试名称")
var testName: String? by korm()
var testURL: String? by korm()
var testCount: Int? by korm()
@delegate:CreatedBy var createdBy: String? by korm()
@delegate:CreatedAt var createdAt: Date? by korm()
@delegate:UpdatedBy var updatedBy: String? by korm()
@delegate:UpdatedAt var updatedAt: Date? by korm()
@delegate:DeletedAt var deletedAt: Date? by korm()
@delegate:Column(name = "version")
@delegate:Version var version: Int? by korm()
fun getOperator(): String {
return "zhangsanfeng"
}
fun beforeDelete(scope: Scope): Scope {
scope.skipLeft = false
return scope
}
}
本教程中其他章节使用的Entity定义如下
import com.sdibt.korm.core.annotatoin.*
import com.sdibt.korm.core.callbacks.Scope
import com.sdibt.korm.core.entity.EntityBase
import com.sdibt.korm.core.entity.korm
import java.util.*
import javax.persistence.Table
@Table(name = "Test_Book")
class TestBook : EntityBase() {
@delegate:AutoID var testId: String? by korm()
@delegate:Comment("测试名称")
var testName: String? by korm()
var testURL: String? by korm()
var testCount: Int? by korm()
@delegate:CreatedBy var createdBy: String? by korm()
@delegate:CreatedAt var createdAt: Date? by korm()
@delegate:UpdatedBy var updatedBy: String? by korm()
@delegate:UpdatedAt var updatedAt: Date? by korm()
fun getOperator(): String {
return "zhangsanfeng"
}
fun beforeDelete(scope: Scope): Scope {
scope.skipLeft = false
return scope
}
}
自动填充属性,定义了相关字段并使用了注解,则启用相应的功能。
//创建者
@delegate:CreatedBy var createdBy: String? by korm()
//创建时间
@delegate:CreatedAt var createdAt: Date? by korm()
//更新者
@delegate:UpdatedBy var updatedBy: String? by korm()
//更新时间
@delegate:UpdatedAt var updatedAt: Date? by korm()
//软删除
@delegate:DeletedAt var deletedAt: Date? by korm()
//乐观锁
@delegate:Column(name = "version")
@delegate:Version var version: Int? by korm()
涉及到操作者的属性会自动从实体类的getOperator方法获取
fun getOperator(): String {
return "zhangsanfeng"
}