若依框架后端
使用的技术
- JDK1.8以上
- MySQL 5.7以上
- Maven 3.0以上
技术手册
分页
startPage(); // 此方法配合前端完成自动分页
但是会出现一些问题使分页失效
失效原因1
startPage();
List<User> list;
if(user != null){
list = userService.selectUserList(user);
} else {
list = new ArrayList<User>();
}
Post post = postService.selectPostById(1L);
return getDataTable(list);
原因分析:这种情况下由于user
存在null
的情况,就会导致pageHelper
生产了一个分页参数,但是没有被消费,这个参数就会一直保留在这个线程上。 当这个线程再次被使用时,就可能导致不该分页的方法去消费这个分页参数,这就产生了莫名其妙的分页。
解决方法
List<User> list;
if(user != null){
startPage();
list = userService.selectUserList(user);
} else {
list = new ArrayList<User>();
}
Post post = postService.selectPostById(1L);
return getDataTable(list);
失效2
startPage();
Post post = postService.selectPostById(1L);
List<User> list = userService.selectUserList(user);
return getDataTable(list);
原因分析:只对该语句以后的第一个查询(Select)
语句得到的数据进行分页。
解决方法
Post post = postService.selectPostById(1L);
startPage();
List<User> list = userService.selectUserList(user);
return getDataTable(list);
导入导出
在实际开发中经常需要使用导入导出功能来加快数据的操作。在项目中可以使用注解来完成此项功能。在需要导出实体类属性添加@Excel注解
里面有一部分属性
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
sort | int | Internet.MAX_VALUE | 导出时在excel中排序,值越小越靠前 |
name | String | 空 | 导出到Excel中的名字 |
dateType | String | 空 | 日期格式, 如: yyyy-MM-dd |
readConverterExp | String | ,空 | 如果是字典类型,请设置字典的type值 (如: sys_user_sex) |
separator | String | , | 读取内容转表达式 (如: 0=男,1=女,2=未知) |
scale | int | -1 | 分隔符,读取字符串组内容 |
roundingMode | int | BigDecimal.ROUND_HALF_EVEN | BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化) |
celltype | Enum | Type.STRING | BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN |
height | String | 14 | 导出类型(0数字 1字符串 2图片) |
width | String | 16 | 导出时在excel中每个列的高度 单位为字符 |
suffix | String | 空 | 导出时在excel中每个列的宽 单位为字符 |
defaultValue | String | 空 | 文字后缀,如% 90 变成90% |
prompt | String | 空 | 当值为空时,字段的默认值 |
combo | combo | Null | 提示信息 |
headerBackgroundColor | Enum | IndexedColors.GREY_50_PERCENT | 设置只能选择不能输入的列内容 |
headerColor | Enum | IndexedColors.WHITE | 导出列头背景色IndexedColors.XXXX |
backgroundColor | Enum | IndexedColors.WHITE | 导出列头字体颜色IndexedColors.XXXX |
color | Enum | IndexedColors.BLACK | 导出单元格背景色IndexedColors.XXXX |
targetAttr | String | 空 | 另一个类中的属性名称,支持多级获取,以小数点隔开 |
isStatistics | boolean | false | 是否自动统计数据,在最后追加一行统计数据总和 |
type | Enum | Type.ALL | 字段类型(0:导出导入;1:仅导出;2:仅导入) |
align | Enum | HorizontalAlignment.CENTER | 导出对齐方式HorizontalAlignment.XXXX) |
handler | Class | ExcelHandlerAdapter.class | 自定义数据处理器 |
args | String[] | {} | 自定义数据处理器参数 |
导出流程
后端
- 在实体类变量上添加@Excel注解
- 在controller添加导出方法
具体方法看官方文档
若依异常处理
在使用try…catch…对异常进行捕获处理,所有的异常会独立设立一个类来处理,我们在可能发生异常的方法里throw抛给控制器。然后使用全局异常处理控制器对异常进行统一处理。
全局异常处理就是使用@ControllerAdvice的注解
若以分页
若以分页需要控制层的返回值和service mapper的返回值一致,不让就会出现分页失效