Bee简单易用:单表操作、多表关联操作,可以不用写sql,极少语句就可以完成SQL操作;10分钟即可学会使用。
Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化。高级需求,还可以方便自定义SQL语句。
Bee框架的常用配置在bee.properties 文件里。
Bee的最新版本号:1.9.5 , maven依赖配置如下:
<dependency> <groupId>org.teasoft</groupId> <artifactId>bee</artifactId> <version>1.9.5</version> </dependency> <dependency> <groupId>org.teasoft</groupId> <artifactId>honey</artifactId> <version>1.9.5</version> </dependency>
若是与spring等配合使用,配置有数据源,则此处的只需要配置bee.databaseName ,其它的url, username,password可以不要。
#bee.db.dbName=mysql #bee.db.driverName = com.mysql.jdbc.Driver bee.db.url =jdbc:mysql://localhost:3306/bee?characterEncoding=UTF-8 bee.db.username = root bee.db.password =
控制是否打印执行的sql语句,打印日志是否一起打印时间(调试时可以关闭,让日志更加简洁),是否可以用select * 而不用列出所有字段(开发测试阶段是可以打开的,让sql语句更加简洁。当前版本,只支持多表操作时配置)。
#control Logger.logSQL(msg) use in Bee. bee.osql.showSQL=true # since v1.8 bee.osql.showSql.showType=true bee.osql.showSql.showExecutableSql=true # since v1.7.0 it is effect when bee.log.loggerType is :systemLogger or fileLogger. bee.osql.showSql.donotPrintCurrentDate=true bee.osql.moreTable.columnListWithStar=false
Bee 默认实现了三种转换规则,第1种是DB下划线与Java驼峰命名互转;第2种与第1种的区别是DB的数据库名称、字段名都用大写,这种在使用Oracle数据库时比较常见;第3种是DB与Javabean实体都使用一样的名称,不需要转换。
1 :order_no<-->orderNo(DB<-->Java), 2:ORDER_NO<-->orderNo(DB<-->Java), 3: original
默认情况是使用第1种方式。
bee.osql.naming.translateType=1
可以在 bee.properties 中更改默认的配置。
#since 1.7.2 #default implement translate type. 1 : order_no<-->orderNo(DB<-->Java), 2: ORDER_NO<-->orderNo(DB<-->Java), 3: original #if want to use other naming rule, you can define a new class implements NameTranslate #default value is :1 bee.osql.naming.translateType=1 #像oracle,如字段名等原来都是大写,可先转成小写再转换为java命名.这样java命名时就不是全是大写. #default: to LowerCase before. 默认是先转小写,因为如不转,DB有用大写的时候会出错
Java字段与表字段间的转换,建议使用默认转换规则,这样可以提高效率,也省事。
但有特殊转换,还是可以自己实现 NameTranslate接口。
对于类名与实体名的特殊转换,可以在 bee.properties 配置里设置,如下所示:
#entity class name->table name,formatter: packagename.ClassName:tableName,packagename.ClassName:tableName #Separate multiple options with comma.Package name can be omitted if they are not confused. #Just config for special #bee.osql.naming.entity2tableMappingList=User2:test_user,com.abc.user.User:test_user
一级缓存即可支持个性化优化配置。
Bee的一级缓存,概念简单,功能强大;一级缓存也可以像JVM一样进行细粒度调优。一级缓存即可支持: 不缓存列表,永久缓存列表,永久缓存且可更新列表,结果集超过一定大小可不放缓存等细粒度配置调优控制. 一级缓存对用户透明,用户编码感觉不到缓存的存在。
#cache=======================start #缓存类型 #bee.osql.cache.type=FIFO #缓存集数据量数目 bee.osql.cache.mapSize=10 #resultset超过一定的值将不会放缓存 bee.osql.cache.workResultSetSize=300 #缓存保存时间(毫秒 ms) bee.osql.cache.timeout=3000 #检测到超时,超过这个使用比例则顺便起线程清除缓存 bee.osql.cache.startDeleteRate=0.6 #缓存容量使用率;添加缓存,检测达到该使用率则清除一定比例缓存 bee.osql.cache.fullUsedRate=0.8 #添加缓存,检测到缓存容量快满时,删除缓存数的比例 bee.osql.cache.fullClearRate=0.2 #仅分库时(bee.dosql.multiDS.type=2),可用格式: dsName.tableName #use table name, not entity name #不缓存表的列表, 表名不区分大小写.视图强烈建议不放缓存,因会产生脏数据. #bee.osql.cache.never=user #永久缓存表的列表, 表名不区分大小写 #bee.osql.cache.forever=constant #只有更改时才会清除缓存,以便同步新的值到缓存. 表名不区分大小写 #bee.osql.cache.modifySyn=para # since v1.7.2. default value is: false (use cache) #bee.osql.cache.nocache=false #since 1.8.99 bee.osql.cache.keyUseMD5=true #cache=======================end
6.1 在插入操作时,SuidRich接口提供了批处理方法。可以设置一个批次最大操作的记录数。
public int[]insert(T[] entity,intbatchSize);
#批量插入最大批处理数 batch size of insert, default is 10000
bee.osql.insertBatchSize=10000
6.2 SuidRich接口支持直接查询返回Json格式的结果。
public String selectJson(T entity);
public String selectJson(T entity,IncludeType includeType);
针对Json的返回结果,可设置相应的格式。
#查询结果直接返回Json是否忽略null bee.osql.selectJson.ignoreNull=true #查询结果直接返回Json中, timestamp是否用毫秒表示 bee.osql.selectJson.timestampWithMillisecond=true bee.osql.selectJson.dateWithMillisecond=true bee.osql.selectJson.timeWithMillisecond=false
Bee框架是基于JDBC的,只要某种数据库提供Java的JDBC驱动,Bee就可以支持。目前测试过的有MySQL、MariaDB、oracle、sqlserver。其它数据库,只需要完善配置文件jdbcTypeToFieldType-{bee.databaseName}.properties
或jdbcTypeToFieldType.properties 就可以用Bee操作相应的数据库。
需要注意的是{bee.databaseName}要与bee.databaseName项的配置一样。
想了解更多Bee+Spring+SpringMVC来开发JavaWeb,请关注公众号。
用 Bee+SpringBoot+Spring Cloud开发微服务,开发效率更高!