通用 CRUD
你可以自己编写 SQL,从而使用 Java 代码进行更加灵活的逻辑控制,然后使用 Accessor
API 去执行。
你也可以使用单表操作的 API,像写SQL一样编写 Java 代码。
你还可以在接口或者抽象类上使用 @Mapper
注解,在方法上使用 @Execute
或 @Select
执行 CRUD 操作。
实体注解说明
@Table
表示该类是个表实体类,并标明表名
值 | 描述 |
---|---|
value | 表名,如果为空的话,则使用实体类名作为表名,例:User -> user,RoleAndUser -> roleAndUser |
注:当然并不一定是被 @Table
注解的类才可以用来接受查询的返回结果,任何 Java Bean 都可以。
@Id
表示该字段为表中的主键
值 | 描述 |
---|---|
value | 指定字段的名称,如果未指定,则直接使用该成员变量名称 |
keyGenerator | 指定主键生成策略,默认为 Snowflake 算法 |
你也可以自定义主键生成策略:
- 实现
KeyGenerator<T>
接口 - 然后在
KeyGenerateUtil
注册你的实现类,KeyGenerateUtil.registerKeyGenerator(class)
- 为主键指定
keyGenerator
,或调用KeyGenerateUtil.generateId(CustomKeyGenerator.class)
方法生成唯一键。
@Column
字段注解
值 | 描述 |
---|---|
value | 指定字段名称。如果未指定,则直接使用该成员变量名称 |
exists | 指定该字段是否在表中存在。如果不存在,在你直接 insert(实体对象)时,则不会解析该字段 |
isDictionaryKey | 指定该字段是否是一个数据字典字段,true 表示存在 |
dictionaryClass | 如果该字段是一个数据字典字段,指定数据字典的枚举类 |
数据字典
如果使用数据字典功能,需要指定字段的 isDictionaryKey
为 true
并且编写枚举类同时实现 DictionaryEnum
接口。
如果该数据字典字段为 DictionaryEnum
类型,并且指定 isDictionaryKey
为 true
,则无需再指定 dictionaryClass
。在处理查询返回结果时,则会填充相应的枚举值。
如果字段的 Java 类型为 String
类型,并且指定 isDictionaryKey
为 true
,则必须指定 dictionaryClass
。在填充时会填充上相应枚举值 的 getValue()
方法返回结果。
如果是其他类型,则不会按照数据字典字段的逻辑来填充值。
其他注解
@DataSource
在使用 @Select
或 @Execute
注解的方法上使用该注解,指定操作使用的数据源。
值 | 描述 |
---|---|
value | 添加数据源时的 tag |