150 lines
4.3 KiB
Kotlin
150 lines
4.3 KiB
Kotlin
//package app.example
|
|
//
|
|
//import org.aikrai.vertx.gen.AnnotationMapping
|
|
//import org.aikrai.vertx.gen.ColumnMapping
|
|
//import org.aikrai.vertx.gen.SqlAnnotationMapper
|
|
//import org.aikrai.vertx.gen.SqlGenerator
|
|
//
|
|
///**
|
|
// * 表名注解示例
|
|
// */
|
|
//@Target(AnnotationTarget.CLASS)
|
|
//@Retention(AnnotationRetention.RUNTIME)
|
|
//annotation class TableName(val value: String)
|
|
//
|
|
///**
|
|
// * 列名注解示例
|
|
// */
|
|
//@Target(AnnotationTarget.FIELD)
|
|
//@Retention(AnnotationRetention.RUNTIME)
|
|
//annotation class Column(val value: String, val type: String = "VARCHAR(255)")
|
|
//
|
|
///**
|
|
// * 主键注解示例
|
|
// */
|
|
//@Target(AnnotationTarget.FIELD)
|
|
//@Retention(AnnotationRetention.RUNTIME)
|
|
//annotation class Id(val value: Boolean = true)
|
|
//
|
|
///**
|
|
// * 非空注解示例
|
|
// */
|
|
//@Target(AnnotationTarget.FIELD)
|
|
//@Retention(AnnotationRetention.RUNTIME)
|
|
//annotation class NotNull(val value: Boolean = true)
|
|
//
|
|
///**
|
|
// * 默认值注解示例
|
|
// */
|
|
//@Target(AnnotationTarget.FIELD)
|
|
//@Retention(AnnotationRetention.RUNTIME)
|
|
//annotation class DefaultValue(val value: String)
|
|
//
|
|
///**
|
|
// * 用户实体类示例
|
|
// */
|
|
//@TableName("tb_user")
|
|
//class User {
|
|
// @Id
|
|
// @Column("id", "SERIAL")
|
|
// @NotNull
|
|
// var id: Long = 0
|
|
//
|
|
// @Column("username")
|
|
// @NotNull
|
|
// var username: String = ""
|
|
//
|
|
// @Column("email")
|
|
// var email: String? = null
|
|
//
|
|
// @Column("created_at", "TIMESTAMP")
|
|
// @DefaultValue("CURRENT_TIMESTAMP")
|
|
// var createdAt: String = ""
|
|
//}
|
|
//
|
|
///**
|
|
// * SQL注解映射示例
|
|
// */
|
|
//class SqlAnnotationExample {
|
|
// companion object {
|
|
// /**
|
|
// * 创建注解映射器
|
|
// */
|
|
// fun createMapper(): SqlAnnotationMapper {
|
|
// val mapper = SqlAnnotationMapper()
|
|
//
|
|
// // 设置表名映射
|
|
// mapper.tableName = AnnotationMapping(
|
|
// annotationClass = TableName::class,
|
|
// propertyName = "value"
|
|
// )
|
|
//
|
|
// // 设置列名映射
|
|
// mapper.addColumnMapping(
|
|
// ColumnMapping(
|
|
// nameMapping = AnnotationMapping(
|
|
// annotationClass = Column::class,
|
|
// propertyName = "value"
|
|
// ),
|
|
// typeMapping = AnnotationMapping(
|
|
// annotationClass = Column::class,
|
|
// propertyName = "type"
|
|
// ),
|
|
// nullableMapping = AnnotationMapping(
|
|
// annotationClass = NotNull::class,
|
|
// propertyName = "value"
|
|
// ),
|
|
// defaultValueMapping = AnnotationMapping(
|
|
// annotationClass = DefaultValue::class,
|
|
// propertyName = "value"
|
|
// )
|
|
// )
|
|
// )
|
|
//
|
|
// // 设置主键映射
|
|
// mapper.primaryKeyMapping = AnnotationMapping(
|
|
// annotationClass = Id::class,
|
|
// propertyName = "value"
|
|
// )
|
|
//
|
|
// return mapper
|
|
// }
|
|
//
|
|
// /**
|
|
// * 测试SQL生成
|
|
// */
|
|
// fun testSqlGeneration() {
|
|
// // 创建注解映射器
|
|
// val mapper = createMapper()
|
|
//
|
|
// // 生成各种SQL
|
|
// val createTableSql = SqlGenerator.generateCreateTableSql(User::class, mapper)
|
|
// val insertSql = SqlGenerator.generateInsertSql(User::class, mapper)
|
|
// val updateSql = SqlGenerator.generateUpdateSql(User::class, mapper)
|
|
// val deleteSql = SqlGenerator.generateDeleteSql(User::class, mapper)
|
|
// val selectSql = SqlGenerator.generateSelectSql(User::class, mapper)
|
|
// val selectByPkSql = SqlGenerator.generateSelectByPrimaryKeySql(User::class, mapper)
|
|
//
|
|
// // 打印SQL
|
|
// println("Create Table SQL:")
|
|
// println(createTableSql)
|
|
// println("\nInsert SQL:")
|
|
// println(insertSql)
|
|
// println("\nUpdate SQL:")
|
|
// println(updateSql)
|
|
// println("\nDelete SQL:")
|
|
// println(deleteSql)
|
|
// println("\nSelect SQL:")
|
|
// println(selectSql)
|
|
// println("\nSelect By PK SQL:")
|
|
// println(selectByPkSql)
|
|
// }
|
|
// }
|
|
//}
|
|
//
|
|
///**
|
|
// * 主函数,用于演示
|
|
// */
|
|
//fun main() {
|
|
// SqlAnnotationExample.testSqlGeneration()
|
|
//} |