SSM-CRUD

1、項目介紹

前端技術:query+Bootstrap+ajax+json前端

後端技術:SSM(spring、springMVC、mybatis)、JSR303校驗mysql

數據庫:mysqlgit

服務器:tomcat9.0github

項目內容:對員工和部門進行增刪改查操做、用pageHelper插件實現分頁功能、全選/全不選等。ajax

2、遇到的問題和解決方法

一、用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 }

3、總結

1566641558267[13]

[RiterWu](https://github.com/RiterWu/ssmcrud)

相關文章
相關標籤/搜索