# 核心类介绍

# SdBean 实体描述

SdBean类用来描述一个实体信息,你可以用它来描述一张数据库表(主要)或一个实体类,属性说明:

该类对应的模板数据为 SdClassContent

属性名称 数据类型 属性描述
String name 名称
String alias 别名
String remark 注释
String schema 模式
String owner 拥有者
String tablespace 表空间
String indexspace 索引表空间
Boolean compressable 是否压缩
Set<String> imports 需要导入的包
Set<String> annotations 类的注解
List<SdColumn> columns 列属性
List<SdColumn> additionalColumns 附加的列属性,该属性一般用于只需要创建类属性而不需要创建表属性时使用
List<SdRelational> relationals 表或类的关系属性
List<SdSequence> sequences 序列属性
Map<String,Object> extensions 自定义属性

# SdColumn 属性描述

SdColumn用来描述一个类或表的字段,该类中主要有两种属性:类属性与表属性,类属性如果不定义或为空时就会自动将表属性转换为类属性

该类对应的模板数据为 SdColumn

类属性

属性名称 数据类型 属性描述
Set<String> imports 类需要引入的包
Set<String> annotations 属性需要添加的注解
SdRelationalContent relationalContent 属性的关系属性
String fieldType 属性的数据类型
String fieldName 属性的名称,驼峰命名,如 mirrenTools
String fieldNamePascal 属性的名称帕斯卡命名,如 MirrenTools
String fieldNameHyphen 属性的名称连字符命名,如 mirren-tools
String fieldNameUnderScore 属性的名字下划线命名,如 mirren_tools
String fieldRemark 属性的注释

类属性

属性名称 数据类型 属性描述
String name 列的名字
String type 列的数据类型
String remark 列的注释
String length 列的长度
String _default 列的默认值
boolean primary 列是否为主键
String primaryName 列的主键名称
boolean foreignKey 列是否为外键
String foreignConstraint 外键的名字
String foreignReferencesDB 外键引用那个库或模式
String foreignReferencesTable 外键引用那个表
String foreignReferencesColumn 外键引用那个表的列
boolean index 是否为索引
boolean unique 索引是否为唯一
boolean concurrently 索引是否并发
String indexType 索引的类型
String indexName 索引的名字
String indexRemark 索引的备注信息
boolean nullable 列是否允许为空,默认true,当primary为true时该属性为false
boolean unsigned 列是否为无符号
boolean autoIncrement 列是否自增量
boolean identity 列是否为标识
Integer identitySeed 标识种子
Integer identityIncrement 标识增量
String sequenceName 自增采用的序列名称
String constraintType 约束条件的类型
String constraintName 约束条件的名称
String constraintExp 约束条件的条件,比如: id > 10
String collate 字符排序
int ordinalPosition 列在表中的顺序
Map<String,Object> extensions 拓展属性

# SdRelational 关系描述

SdRelational 用于描述属性的关系共有4种属性:OneToOne, OneToMany, ManyToOne, ManyToMany

该类对应的模板数据为 SdRelationalContent

属性名称 数据类型 属性描述
Set<String> imports 类需要引入的包
Set<String> annotations 属性需要的注解
Relational relationalType 枚举类,对应4种关系类型
String fieldRemark 关系属性的注释
String fieldType 属性数据类型,比如List<Type>
String fieldName 属性的名字
SdBean bean 创建类与表所需要的属性
Map<String,Object> extensions 拓展属性

# SdTemplate 模板信息

SdTemplate用于设置生成模板,比如你想生成3个文件就需要设置3个SdTemplate

该类对应的模板数据为 SdTemplateContent

属性名称 数据类型 属性描述
String path 模板所在的路径,获取完整的path可以通过SdTemplatePathUtil
String file 模板的名称
boolean override 如果文件已经存在是否覆盖,默认覆盖
String sourceFolder 项目的源码目录,默认值src/main/java/
String packageName 类的包名
String className 类的名字
String suffix 类的后缀名默 .java
List<SdTemplateAttribute> attributes 模板中需要用到的属性
Map<String,Object> extensions 拓展属性

# SdDatabaseOptions 数据库连接信息

SdDatabaseOptions为连接数据库的配置信息

该类对应的模板数据为 SdDatabaseOptions

属性名称 数据类型 属性描述
int loginTimeout 连接超时时间 单位秒,默认60秒
String driverClass 数据库驱动
String url 数据库连接地址
String user 数据库连接用户
String password 数据库连接密码
String schema 模式
Map<String,Object> extensions 拓展属性

# ScrewDriverOptions 工具配置

ScrewDriverOptions为核心工具的配置信息,在org.mirrentools.sd.options.def中已经创建了不同数据库的默认配置,带有SdDatabaseOptions构造参数的会自动判断不同数据库类型并初始化不同数据库类型的配置

属性名称 数据类型 属性描述
SdDatabaseOptions databaseOptions 连接数据库的配置信息
Map<String,SdTemplate> templateMaps 创建代码模板集合,key为模板的名字,value为模板属性
String outputPath 项目所在路径,默认当前项目
String codeFormat 生成使用编码格式,默认UTF-8
SdClassConverter beanConverter SdClassConverter
SdTemplateContentConverter templateContentConverter 模板转换器
ScrewDriverTemplateEngine templateEngine 模板生成工具
ScrewDriverDbUtil dbUtil 数据库相关操作执行工具
SdTableContentConverter tableConverter 将SdBean转换为数据库表的操作属性的转换器
SdTableToClassConverter classConverter 将SdTable转换ClassContent的转换器
SdDatabaseContentConverter databaseConverter 将SdDatabase转换为数据库的操作属性
Map<String,Object> extensions 拓展属性

# ScrewDriverDbUtil 数据库工具

ScrewDriverDbUtil是数据库的操作工具,可用操作数据库表相关操作 实例化方法 通过静态方法 instance获取实例,instance接收一个SdDatabaseOptions参数

方法名称 接收参数 返回结果 说明
getConnection 多种 Connection 获取数据库连接
execute String 数据库语句 boolean 执行SQL语句
existDatabase String 数据库名称 boolean 检查数据库是否存在
existTable String 数据库名称 boolean 检查数据库表是否存在
createDatabase 多种 boolean 创建数据库
updateDatabase 多种 boolean 修改数据库
createTable 多种 boolean 创建一张表
updateTable 多种 boolean 修改一张表
deleteTable 多种 boolean 删除一张表
getSdTable 多种 SdTable 获取数据库中指定表的描述
getTableNames List<String> 获取当前数据库所有数据库表名,如果不存在返回长度为0的集合
getTableAttribute String 表的名称 SdTableAttribute 获取指定数据库,指定表的属性,如果不存在返回null
getTableColumnsAttribute String 表的名称 List<SdTableColumnAttribute> 获取当前数据库中指定表的所有属性,如果不存在抛出异常
getTablePrimaryKeyAttribute String 表的名称 SdTablePrimaryKeyAttribute 获取指定表的主键属性,如果不存在返回null
getTableIndexKeysAttribute String 表的名称 List<SdTableIndexKeyAttribute> 获取指定表的索引属性,如果不存在返回长度为0的集合
getTableExportedKeysAttribute String 表的名称 List<SdTablePortedKeysAttribute> 获取指定表的外键索引属性,如果不存在返回长度为0的集合
getTableImportedKeysAttribute String 表的名称 List<SdTablePortedKeysAttribute> 获取指定表的主键索引属性,如果不存在返回长度为0的集合

# ScrewDriver 工具

ScrewDriver抽象类是本工具的核心, 用于生成代码与数据库操作 实例化方法 通过静态方法 instance获取实例,instance接收一个ScrewDriverOptions参数

方法名称 接收参数 返回结果 说明
createCode SdBean 实体类描述 boolean 执行生成代码,成功返回true,失败返回false
createCode SdClassContent 实体类描述上下文 boolean 执行生成代码,成功返回true,失败返回false
createDatabase SdDatabase 数据库描述 boolean 执行创建数据库,成功返回true,失败返回false
createTable SdBean 实体类描述 boolean 执行创建表,成功返回true,失败返回false
readTable String 表的名称 SdClassContent 执行读取表信息,读取成功返回实体描述上下文