更新文档
This commit is contained in:
parent
ca74e4f77c
commit
f5d8ca33d2
|
@ -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。
|
||||
|
|
|
@ -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()方法。
|
||||
~~~
|
||||
|
|
|
@ -98,25 +98,77 @@ menus = BeanUtils.buildTree(menus);
|
|||
返回第一级子节点集合。
|
||||
|
||||
## 查询Date类型日期范围,如何自动绑定?
|
||||
使用Comparison.BETWEEN进行绑定,BETWEEN支持数组、List、及逗号拼接的字符串。
|
||||
使用Comparison.GE,Comparison.LT进行绑定,避免数据库转型。
|
||||
~~~java
|
||||
@BindQuery(comparison = Comparison.BETWEEN, field = "createTime")
|
||||
private List<Date> createDate;
|
||||
/**
|
||||
* 创建时间-起始
|
||||
*/
|
||||
@BindQuery(comparison = Comparison.GE, field = "createTime")
|
||||
private Date createTimeBegin;
|
||||
|
||||
/**
|
||||
* 创建时间-截止(截止时间<=当天23:59:59是不精确的,应该是<第二天)
|
||||
*/
|
||||
@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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
~~~
|
||||
|
||||
|
|
Loading…
Reference in New Issue