初接触实际Spring Boot项目的小总结
先说下该项目用到的一些技术:
- Spring boot
- Maven
- lombok
- Jpa
- thymeleaf
- easypoi
- layui
SQL Server 附加数据库时错误:拒绝访问
附加数据库失败,操作系统错误 5:”5(拒绝访问。)”
在相应的文件上,右键ー属性ー安全,给予Authenticated Users
组完全权限。
然后尝试再次附加。
Controller的几种写法
返回值
返回String
String的内容就相当于ViewName。
返回@ResponseBodyMap<String, Object>
于是方法体可以这样写:
1 | Map<String, Object> map = new HashMap<>(); |
适用于ajax的异步请求。
返回ModelAndView
1 | ModelAndView modelAndView = new ModelAndView(); |
与上面一种方法类似,但是可以自由设置View。
参数
HttpSession session
可以直接获取到session。
假如session放入了一个user实例,前端可以这样获取:
1 | th:value="${session.user.userName}"> |
@RequestBody + 实体类
能将前端传的json自动映射为一个实体类。
前端ajax写法:
1 | $.ajax({ |
data可以自动转换表单项,也可以手动写:
1 | var data = {"oldPassword": oldPassword, "newPassword": newPassword}; |
@RequestParam
如:@RequestParam(value = "userName") String userName
那么请求方式该是原本的链接后面加上?userName=Ayagikei
Model model
获取model对象然后返回到前端页面。前端可以直接获取传入的东西。
JS获取YYYY-MM-DD格式的当天日期
1 | var date = new Date(); |
JS实现表格的展开/隐藏
以下代码举例的是多个表单的情况,以ID进行区分:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//隐藏/展开按钮
$('.mine-hide-btn').click(function () {
var id = $(this).attr('data-id');
var classname = "trHidden" + id;
if ($('.' + classname).attr("hidden") == "hidden") {
$('.' + classname).removeAttr("hidden");
$(this).text("隐藏");
}
else {
$('.' + classname).attr("hidden", "hidden");
$(this).text("展开");
}
return false;
});
分页
后端
Controller
返回一个Page对象即可。
Service(含模糊搜索的处理)
1 | Sort sort = new Sort(Sort.Direction.ASC, "id"); |
Repository
Jpa只需要声明个方法即可:
1 | Page<UserDO> findAllByIdLike(String id, Pageable pageable); |
前端
内容展示
用 th:each
遍历展示传来的Page对象的所有内容即可。
页面指示器
1 | <div class="page-wrap"> |
查询指定日期的数据
举例为User表中Date字段为日期
Repository
声明以下方法:
1 | List<User> findAllByUserIdAndDateGreaterThanEqualAndDateBefore(String userId, Date after, Date before, Sort sort); |
Service
1 | /** 查询某一天的订单 |
EasyPoi所用到的工具类以及设置边框的方法
FileUtil.java
1 |
|
ExcelExportStyler.java
这是设置边框线的一个Styler。
1 | import cn.afterturn.easypoi.excel.export.styler.AbstractExcelExportStyler; |
MD5Utils
1 | import java.security.MessageDigest; |
不定长度的单元格合并的前端展示以及导出
前端展示
重点就是rowspan要设为长度,同时第一个td要只出现一遍,所以要加个if限定。
1 | <span th:each="item,itemIter : ${table}"> |
导出
在需要合并的List上加注解:
1 |
初接触实际Spring Boot项目的小总结