vertx-pj/vertx-demo/src/main/kotlin/app/example/SqlAnnotationExample.kt
2025-03-20 10:19:29 +08:00

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()
//}