JavaSE 運算符 算術運算符:+,-,*,/,%,++(自增),--(自減) i++:先用後+1;++i:先+1後用 賦值運算符:= 擴展賦值運算符:+=,-=,*=,/= a+=b >a=a+b: 可讀性差,但是編譯效率高,且會自動進行類型轉換; 當ab為基本數據類型時,a+b和b+a ...
java中各種常用分頁插件:
-
MyBatis分頁插件:MyBatis提供了一種分頁插件,可以通過配置實現分頁查詢。使用MyBatis分頁插件需要在配置文件中添加插件配置。
-
PageHelper:PageHelper是一個開源的MyBatis分頁插件,可以通過簡單的配置實現分頁查詢。它支持MySQL、Oracle、PostgreSQL、SQL Server等資料庫。
-
JPA分頁插件:JPA提供了一種分頁插件,可以通過配置實現分頁查詢。使用JPA分頁插件需要在配置文件中添加插件配置。
這些分頁的核心原理都是大相徑庭,
舉例sql為:select name from students。如果是mysql分頁就是select name from students limit 0,10 java中的分頁插件操作技巧是 select * from (java類中創建的SQL語句) limit x,y;其中的x和y就是前端傳給後端的pageNum和pageSize,只是插件jar包把其中的複雜性都封裝了,但是原理都是這樣的。這樣的分頁是針對簡單的sql且都寫在一個sql中。這樣進行分頁,但是在常用的代碼中有一個小坑,如下這樣的分頁是不生效的:
Controller層:
impl層:
上面的每個userMapper都對應一個xml中的sql,這樣是不行的,因為這樣操作就成了 select * from (select * from user a select * from user b) limit 0,10
這樣有了兩個並行的sql,是無法limit,所以會失敗,
如果要生效,如果上面getUserRoleListByDeptId的方法是下麵這樣的
那就可以分頁成功。
或者進行手動分頁,對所有的都生效:
Integer pageNum = page;
Integer pageSize = page_size; // 每頁顯示的條數
List<UserRoleListVO> userList = userService.findUserNamesByResourceId(companyOrProjectId, isCompany,nameOrphone,roleId);
int totalSize = userList.size(); // 總條數
int totalPage = (totalSize + pageSize - 1) / pageSize; // 總頁數
int startIndex = (pageNum - 1) * pageSize; // 起始索引位置
List<UserRoleListVO> pageList = new ArrayList<>();
if (startIndex < totalSize) {
int endIndex = Math.min(startIndex + pageSize, totalSize);
pageList = userList.subList(startIndex, endIndex);
}
return R.ok(pageList, totalSize);
代碼帖出來了,粘貼可用。