JavaWeb的一些绝招,可以让开发更简单
1. 快速配置数据源分片(Sharding)
Sharding分片的话, 只需要一句话,就可以完成分片. 有以下两种写法,与表名关系或与实现类关联.
数据源有ds0,ds1; test_user总共有6个表, ds0是test_user0,test_user1,test_user2,另外三个在ds1.分片键是id, 默认是根据id的值求余,余数的下标即可表的下标.
ShardingConfig.addShardingBean("test_user",new ShardingBean("ds[0..1].test_user[0..5]", "id"));
ShardingConfig.addShardingBean(TestMyUser.class,new ShardingBean("ds[0..1].test_my_user[0..5]", "id"));
原文链接:https://blog.youkuaiyun.com/abckingaa/article/details/129221516
2. 数据常量值转换
像 1->是, 0-> 否; 1->男, 0->女;
这种值的转换,该由前端来转换,还是后端转换??
前后端大家都不想做, 吵得不可开交. 最终到底谁来做呢??
有了这个神器, 后端的工程师们,你就大胆揽下这活吧.
在Javabean里,使用注解搞定:
@Dict(map = "0=女,1=男",nullToValue="未知")
private String sex;
3. null值转换
在Javabean看见过这种代码吗?
估计Javabean也不想当这个bean了.
public String getFilePathName() {
return filePathName == null ? "N/A" : filePathName;
}
public void setFilePathName(String filePathName) {
this.filePathName = filePathName;
}
public String getOperator() {
return operator == null ? "N/A" : operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
要是上100个字段,都是这种,那可惨了. 别想着用@getter, @setter自动生成了, 这种加了逻辑, 自动生成做不了.
还是用这个吧:
@Dict(nullToValue="N/A")
private String userid;
4. 金额数据转大写
System.out.println(CnNum.tran(1234567.89));
System.out.println(CnNum.tranToUpper(12.89));
一百万二十万三万四千五百六十七点八九
壹拾贰圆捌角玖分
引入 : org.teasoft.beex.util.CnNum; 即可.
5. 配置多数据源的三种方式(Spring boot + Bee)
https://blog.youkuaiyun.com/abckingaa/article/details/129221516
6. 生成Javabean
//it is easy way. 最简单的用法,所有的都用默认配置.
new GenBean().genSomeBeanFile("test_user");
new GenBean().genAllBeanFile(); 为所有表生成Javabean. 一行搞定
7. 根据Javabean生成表
要是已经有Javabean, 可由Javabean生成表.
Ddl.createTable(Orderhistory.class, false); //创建表,若是原来有表,则不覆盖
8.链式写法 查实体List.
BF.getSuid().select(new User().setUsername("张三").setPassword("abc"));
这种写法,是链式风格写法, 在此不作推荐.
这种写法,javabean要作对应调整
public class User {
private Long id;
private String username;
private String password;
public Long getId() {
return id;
}
public User setId(Long id) {
this.id = id;
return this;
}
public String getUsername() {
return username;
}
public User setUsername(String username) {
this.username = username;
return this;
}
public String getPassword() {
return password;
}
public User setPassword(String password) {
this.password = password;
return this;
}
}
9.解决硬编码
比如说查询Exam表里的name字段:
suidRichExt.select(new Exam(), "name");
有以下两种方式解决硬编码:
SuidRichExt suidRichExt=new ObjSQLRichExt();
suidRichExt.select(new Exam(), Exam::getName); //要求 jdk1.8+
suidRich.select(new Exam(), Exam_F.name); //要定义一个静态的变量字段类Exam_F(可自动生成)
Exam_F是可以自动生成的 , 自动命名规则 {Entity}_F, 可以自己定义前缀和后缀.
config.setGenFieldFile(true); //生成字段文件, 这样可以避免硬编码引用字段,速度也比反射快.
--------------------------------------------------------------
ORM Bee Sharding 分库分表就是那么简单,对开发透明,不影响业务,简单易用,文件小,性能好;支持 Mongodb,支持 JDBC,还支持 Android 和 Harmony;可以同时使用多种不同类型的数据库。
Bee,互联网新时代的 Java ORM 工具,更快、更简单、更自动,开发速度快,运行快,更智能
使用分库分表像使用单库一样方便,用户可无需关心分片实现;使用 MongoDB 像使用 MySQL 一样容易;
使用 DB 分片 (多节点) 像用单节点一样方便,对分库分表透明;
Hibernate/MyBatis + plus + Sharding-JDBC + jpa + Spring data +GraphQL = Bee