前端技術:query+Bootstrap+ajax+json前端
後端技術:SSM(spring、springMVC、mybatis)、JSR303校驗mysql
數據庫:mysqlgit
服務器:tomcat9.0github
項目內容:對員工和部門進行增刪改查操做、用pageHelper插件實現分頁功能、全選/全不選等。ajax
一、用pageHelper插件實現分頁,pageSize=集合長度(pagehelper插件失效)spring
pageInfo源碼中:sql
1 if (list instanceof Collection) { 2 this.pageNum = 1; 3 this.pageSize = list.size(); 4 this.pages = this.pageSize > 0 ? 1 : 0; 5 this.size = list.size(); 6 this.startRow = 0; 7 this.endRow = list.size() > 0 ? list.size() - 1 : 0; 8 }
錯誤緣由:pagehelper除了添加依賴,還須要在mybatis-config.xml中配置中添加攔截器PageInterceptor數據庫
1 <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --> 2 <dependency> 3 <groupId>com.github.pagehelper</groupId> 4 <artifactId>pagehelper</artifactId> 5 <version>5.1.10</version> 6 </dependency>
1 <!-- 配置mybatis分頁插件PageHelper --> 2 <plugins> 3 <plugin interceptor="com.github.pagehelper.PageInterceptor"> 4 <!--分頁參數合理化--> 5 <property name="reasonable" value="true"/> 6 </plugin> 7 </plugins>
二、校驗數據不僅僅只是前端校驗,後端和數據庫都須要校驗json
對於一些重要數據,後端也須要校驗,用的是spring支持的JSR303校驗後端
導入Hibernate-Valdator
在pojo對象的字段上添加註解,例如:@Pattern是自定義的約束
1 @Pattern(regexp = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]{2,5})", message = "用戶名必須是6-16位英文和數字或者2-5位中文的組合") 2 private String empName;private String gender; 3 //@Email 4 @Pattern(regexp = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$", message = "郵箱格式不正確!") 5 private String email;
獲取字段和信息
1 @ResponseBodypublic ResultData add(@Valid Employee employee, BindingResult result){ 2 //用map來封裝校驗信息 3 Map<String,Object> map = new HashMap<>(); 4 List<FieldError> errors = result.getFieldErrors(); 5 for(FieldError e:errors){ 6 System.out.println("錯誤的字段名:"+e.getField());
System.out.println("錯誤的信息:"+e.getDefaultMessage()); map.put(e.getField(),e.getDefaultMessage()); 7 } 8 return ResultData.fail().add("errorFields",map); 9 }
[RiterWu](https://github.com/RiterWu/ssmcrud)