更新文档

This commit is contained in:
mazhicheng 2020-07-02 19:14:56 +08:00
parent ca74e4f77c
commit f5d8ca33d2
3 changed files with 80 additions and 14 deletions

View File

@ -45,12 +45,12 @@
* 中间+按钮,点击可添加一行。
* 最右侧-按钮,点击可删除该行。
2. 字段名
* 字段名是数据库中的字段名称建议使用英文小写命名以下划线分割name, teacher_id等。
* 字段名是数据库中的字段名称建议使用英文小写命名以下划线分割name, teacher_id等。(注意请勿使用“"a_xyz"这种"单字母+下划线"形式命名避免cglib转换问题)
* 字段名被转化后会自动添加到Entity类的属性中。转化过程中会将下划线去掉并将下划线后面的首字母大写遵循驼峰命名法。如name, teacherId等。
3. 字段标签
* 字段标签在数据库表中为该字段的comment备注。
* 代码中字段标签将显示为该字段的名称,如:姓名,教师等,建议使用名词,因为该备注会用于拼接校验提示信息等。
* 代码中字段标签将显示为该字段的名称,如:姓名,教师等,建议使用名词,因为该备注会用于拼接校验提示信息及前端显示等。
4. 数据类型
* devtools提供了7种数据类型供选择分别是String, Long, Integer, Boolean, Date, Double, BigDecimal。

View File

@ -37,16 +37,30 @@ files.storage.directory=/myfile
## 3. 使用说明
### 3.1 EasyExcel的增强优化
* 支持基于Java validator注解的自动数据校验支持@BindDict注解自动转换字典显示值-存储值
支持基于Java validator注解的自动数据校验
* 支持@ExcelBindDict注解自动转换字典显示值-存储值
使用示例:
@ExcelBindDict注解使用示例
~~~java
@NotNull(message = "用户状态不能为空") // 自动校验
@BindDict(type = "USER_STATUS") // 自动转换数据字典 label-value
@ExcelBindDict(type = "USER_STATUS") // 自动转换数据字典 label-value
@ExcelProperty(value = "状态", index = 4, converter = DictConverter.class)
private String userStatus;
~~~
* 支持@ExcelBindField注解自动转换关联字段name-id
@ExcelBindField注解使用示例
~~~java
@ExcelBindField(entity = Department.class, field = "name", setIdField = "parentId")
//@NotNull(message = "上级部门不能为空")
@ExcelProperty(value = "上级部门", index = 0)
private String parentName;
// setIdField="parentId"将转换后的id值设置到parentId
private Long parentId;
~~~
* 轻量封装增强的Excel Data Listener
继承后只需要实现自定义校验additionalValidate() 和 保存数据的saveData()方法。
~~~

View File

@ -98,25 +98,77 @@ menus = BeanUtils.buildTree(menus);
返回第一级子节点集合。
## 查询Date类型日期范围如何自动绑定
使用Comparison.BETWEEN进行绑定BETWEEN支持数组、List、及逗号拼接的字符串
使用Comparison.GEComparison.LT进行绑定避免数据库转型
~~~java
@BindQuery(comparison = Comparison.BETWEEN, field = "createTime")
private List<Date> createDate;
/**
* 创建时间-起始
*/
@BindQuery(comparison = Comparison.GE, field = "createTime")
private Date createTimeBegin;
/**
* 创建时间-截止(截止时间<=当天235959是不精确的应该是<第二天
*/
@BindQuery(comparison = Comparison.LT, field = "createTime")
private Date createTimeEnd;
public TodoRemider setCreateTimeEnd(Date createTimeEnd) {
this.createTimeEnd = D.nextDay(createTimeEnd);
return this;
}
~~~
## 查询Date类型日期时间字段 = 某天,如何自动绑定?
建议逻辑: datetime_field >= beginDate AND datetime_field < (beginDate+1) 。
无函数处理,不涉及数据库类型转换。示例:
~~~java
/**
* 创建时间-起始
*/
@BindQuery(comparison = Comparison.GE, field = "createTime")
private Date beginDate;
private Date createTime;
/**
* 创建时间-截止
*/
@BindQuery(comparison = Comparison.LT, field = "createTime")
private Date endDate;
private Date createTimeEnd;
public void setBeginDate(Date beginDate){
this.beginDate = beginDate;
this.endDate = D.addDays(beginDate, 1);
public Date getCreateTimeEnd() {
return D.nextDay(createTime);
}
~~~
## 如何在新建时填充createBy创建人等字段
* 可以通过Mybatis-plus的MetaObjectHandler接口自动填充示例
~~~java
@Component
public class CustomMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
BaseLoginUser currentUser = IamSecurityUtils.getCurrentUser();
if(currentUser != null){
this.strictInsertFill(metaObject, Cons.FieldName.createBy.name(), Long.class, currentUser.getId());
}
}
...
}
~~~
* 也可以在BaseCustomServiceImpl中重写beforeCreateEntity统一填充所需字段。如从登录用户取值填充 创建人ID姓名等字段。
~~~java
public class BaseCustomServiceImpl<M extends BaseCrudMapper<T>, T> extends BaseServiceImpl<M, T> implements BaseCustomService<T> {
@Override
protected void beforeCreateEntity(T entity){
BaseLoginUser currentUser = IamSecurityUtils.getCurrentUser();
if(currentUser != null){
// 填充创建人示例
Field field = BeanUtils.extractField(entityClass, Cons.FieldName.createBy.name());
if(field != null){
BeanUtils.setProperty(entity, Cons.FieldName.createBy.name(), currentUser.getId());
}
}
}
}
~~~