一、项目介绍

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

后端技术:SSM(spring、springMVC、mybatis)、JSR303校验

数据库:mysql

服务器:tomcat9.0

项目内容:对员工和部门进行增删改查操作、用pageHelper插件实现分页功能、全选/全不选等。

二、遇到的问题和解决方法

1、用pageHelper插件实现分页,pageSize=集合长度(pagehelper插件失效)

pageInfo源码中:

  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>

2、校验数据不单单只是前端校验,后端和数据库都需要校验

对于一些重要数据,后端也需要校验,用的是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)

SSM-CRUD的更多相关文章

  1. SSM + VUE 实现简单的 CRUD

    一.项目分析 1.需求 (1)使用 ssm + vue 实现一个crud(数据库增删改查)的简单实现.(2)前后端分离,前端页面展示+后台管理. 2.技术点 (1)基础框架: SSM(Spring,S ...

  2. JavaWeb基础——JSON

    一.JSON是什么? JSON(JavaScript Object Notation).轻量级数据交换格式. JSON的后缀名:.json JSON的MINE类型:application/json 二 ...

  3. ssm框架的搭建实现CRUD的操作

    最近在开发公司的一个系统,系统的框架是用ssm的框架搭建的,当然和这次写博客的不一样,它拥有很多的配置文件,企业级的开发所需要的配置文件是非常繁琐的,今天记录一下一个简单的SSM框架的搭建和实现一个C ...

  4. 基于SSM之Mybatis接口实现增删改查(CRUD)功能

    国庆已过,要安心的学习了. SSM框架以前做过基本的了解,相比于ssh它更为优秀. 现基于JAVA应用程序用Mybatis接口简单的实现CRUD功能: 基本结构: (PS:其实这个就是用的Mapper ...

  5. SSM整合CRUD操作(一)

    http://www.cnblogs.com/loger1995/p/6352179.html?utm_source=itdadao&utm_medium=referral 说明:这是我刚开始 ...

  6. 具有SSM框架的CRUD与多条件查询

    概述 居于ssm版本的crud跟多添加查询, 并带分页的demo 详细 代码下载:http://www.demodashi.com/demo/13653.html 一.功能展示 部门CRUD: 员工C ...

  7. SSM——(二):easyUI的CRUD

    1.在WebContent下新建admin目录,添加index.html(用来显示user表的CRUD): 总结: 1.datagrid接收的必须是json数据: 2.使用分页插件会自动向后台传递St ...

  8. SSM框架CRUD小案例

    1.数据库准备 部门tbl_dept 员工tbl_emp 建立员工和部门的外键 2.在IDEA创建SSM项目环境 2.1配置Web模块 最上面的图是错误示范,注意!!! 在Tomcat配置了项目路径, ...

  9. SSM框架之Mybatis(2)CRUD操作

    Mybatis(2)CRUD 1.基于代理Dao实现CRUD操作 使用要求: 1.持久层接口(src\main\java\dao\IUserDao.java)和持久层接口的映射配置(src\main\ ...

  10. 使用SSM搭建一个简单的crud项目

    使用SSM完成增删查改 前端使用到的技术:ajax,json,bootstrap等 完整项目地址:点这里GitHub 项目地址,可以在线访问 这一章节主要搭建SSM的环境. SpringMVC Spr ...

随机推荐

  1. css笔记 - flex弹性盒布局

    flex: display:-webkit-box | -moz-box;盒布局 -webkit-box-flex | -moz-box-flex;弹性盒布局 -webkit-box-ordinal- ...

  2. CF1163F Indecisive Taxi Fee(线段树+图论)

    做法 这里的修改是暂时的 找到一条最短路径\(E\),需要考虑的是将最短路径上的边增大 每个点考虑与\(1/n\)的最短路径在E上前缀/后缀的位置,设\(L_i,R_i\) 考虑每条边\((u,v)\ ...

  3. Java 中HashTable、HashMap、TreeMap三者区别,以及自定义对象是否相同比较,自定义排序等

    /* Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. Map |--Hashtable:底层是哈希表数据结构,不可以存入null键null值.该集合是线程同步的.效率低.基本已废 ...

  4. Hadoop hadoop 机架感知配置

    机架感知脚本 使用python3编写机架感知脚本,报存到topology.py,给予执行权限 import sys import os DEFAULT_RACK="/default-rack ...

  5. JDK提供的原子类原理与使用

    原子更新基本类型 原子更新数组 原子更新抽象类型 原子更新字段 原子更新基本类型: package com.roocon.thread.t8; import java.util.concurrent. ...

  6. win10常用快捷键(热键)总结

    win10常用快捷键总结: win+Ctrl+D 创建虚拟桌面 win+Ctrl+左(右)键 切换虚拟桌面 win+Ctrl+F4 关闭虚拟桌面 win+D 隐藏所有窗口/显示所有窗口 win+M 隐 ...

  7. 开源JS图片裁剪插件

    开源JS图片裁剪插件 一.总结 一句话总结: 要用点赞最高的插件,这样适用性最好,效果最好,出问题的概率也最低,这里电脑端和手机端都可以用的建议用 cropper.js 二.5款好用的开源JS图片裁剪 ...

  8. Spring中集成Ehcache缓存

    1.导入依赖包 <dependency> <groupId>org.springframework</groupId> <artifactId>spri ...

  9. 【Java.Regex】用正则表达式查找Java文件里的字符串

    代码: import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; imp ...

  10. Nginx http -> https 跳转后 POST 丢失

    在 nginx.conf 配置文件中添加如下配置进行 http -> https 跳转 server { listen ; server_name example.org; https://$s ...