当前位置: 首页 > 工具软件 > Bee > 使用案例 >

Bee的约定与自定义

楚洋
2023-12-01

2、Bee的约定与自定义

2.1 我们的约定(约定优于配置)

2.1.1 字段值的约定

在select,update,insert,delete操作中,
我们约定默认不处理null和空字符串;其它有值的字段全部会解析;
在select和delete两个操作中,会自动作为过滤条件(对应SQL语句的where部分).
默认操作符是"=".

2.1.2 命名转换的约定

#命名转换配置, 1 : order_no<–>orderNo(DB<–>Java) 最常用,可用于mysql等多种DB,
#2: ORDER_NO<–>orderNo(DB<–>Java) Oracle命名风格, 3: original 原样保留
bee.osql.naming.translateType=1

2.1.3 主键的约定

主键名称默认是"id"(小写)
采用约定,可以更省事,系统运行效率也更高。

2.1.3 Suid.update(T entity)

默认主键作为过虑条件,其它非空且非null的作为要更新的新值。
默认操作符是"=".

2.1.4 缓存的约定

从V1.11开始,缓存使用相对安全的原型模式;默认是实体没有实现序列化,则不放缓存(值为1)。
有0,1,2三种模式可选
bee.osql.cache.prototype=1

一级缓存,概念简单,功能强大;一级缓存也可以像JVM一样进行细粒度调优;支持可更新的长久缓存列表,更新配置表,不需要重启。天生抵御缓存穿透 。

2.1.5 SQL关键字大小写

默认是小写
#value is:lower,upper
bee.osql.sqlKeyWordCase=lower

2.1.6 与众不同的

Bee不需要xml映射文件

Bee不需要mapping接口

动态/任意组合查询条件,不需要提前准备dao接口,有新的查询需求也不用修改或添加接口。

无第三方插件依赖;可零配置使用。

部分数据库至少要配置:
bee.db.url =
bee.db.username =

性能好:接近JDBC的速度;文件小:Bee V1.8 仅217k, V1.9.5 仅315k,V1.9.8 仅310k。

同时支持 JDBC (比如 JavaWeb),Android 和 Harmony

提供辅助功能,提高开发效率

自动生成表对应的Javabean,根据Javabean创建表,Javaweb后端代码
读取Excel;支持中文金额大小写转换;
复杂查询前后端可自动解析等.

2.1.7 其它

默认不开启二级缓存
bee.osql.cache.useLevelTwo=false
默认不开启多数据源
bee.dosql.multiDS.enable

2.2 约定情况不满足需求时

2.2.1 想要处理null和空字符

SuidRich里的方法,有IncludeType参数的,可以进行相关设置.
或者通过Condition设置IncludeType. Suid,SuidRich有不少方法有Condition参数。
public Condition setIncludeType(IncludeType includeType);
IncludeType中:INCLUDE_NULL包括null值,INCLUDE_EMPTY包括空字符,
INCLUDE_BOTH包括以上两者。

2.2.2 默认命名转换不满足需求

可自定义转换方法。 配置,可参考: FAQ_CN.md 第41点.
表名与实体名不一致,使用@Table。
字段不一致使用@column(V1.17提供转换实现支持)
官方不推荐使用@column注解,在API文档里记录有好几种可以替代该注解的方案.
V1.17 兼容JPA的@Table,@column(只需要设置name=“xxx”).
Bee支持在@Table注解里使用变量。如:@Table(“Orders${month}”),通过设置month的值,可以映射到不同的历史订单表。
某些名山规范,建议boolean型变量在entity改字段名,不是一个好主意,只会自找麻烦。

2.2.3 主键名称不是id

主键不是Id,使用@PrimaryKey
Suid.update(T entity) 会相应选取主键作为过滤条件。其它相关方法也有类似处理。
V1.17 兼容JPA的@Id字段,与@PrimaryKey有同等效果。

2.2.4 主键字段类型不是Long;主键生成策略

在Suid,SuidRich的insertAndReturnId方法,返回值是Long值。
V1.17 支持主键字段是Integer/int时,也可使用insertAndReturnId,返回的long型值是在int型范围内的。
主键字段是String类型,若是Long型数值的字符串,也可以使用insertAndReturnId(V1.17使用@GenId注解可以).
当使用非数字的字符串作为主键,如@GenUUID生成的字段,则不能使用insertAndReturnId.

主键自动生成
Bee框架,主键策略是一种松耦合的设计。实体里有可设置值,也可以自动生成。
有一个是否覆盖的开关,当实体有值时,即可配置了自动生成,也可以不覆盖原有的值(此时,自动生成被忽略)
统一配置:
使用bee.properties里bee.distribution.genid开头的相关配置。
在bee.properties配置的好处是:可以统一配置,不会侵入代码。
V1.17可以使用@GenId,@GenUUID注解生成主键值。

 类似资料: