jquery ajax实现 SSM增删改查
- 运行结果展示:
-
- 代码整体布局:
- 代码如下:
- pom.xml:
- Category:
- CommonResult :
- CategoryMapper:
- ICategoryService:
- CategoryServiceImpl:
- CategoryController:
- db.properties:
- mybatis-config.xml:
- spring-mybatis.xml:
- spring-mvc.xml:
- web.xml:
- category.jsp:
- 关键点参考:
- 注意:
- ajax中的数据传输:
- ajax中的get/post:
- 引入通用mapper:(可以理解为引入“接口实现类里的各种方法”)
- 绑定表/id实现“通过主键更新/删除的方法”:
- 接口插件:
运行结果展示:

查询:

添加:





修改:





删除:





代码整体布局:


代码如下:
pom.xml:
| <?xml version="1.0" encoding="UTF-8"?> |
| |
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| <modelVersion>4.0.0</modelVersion> |
| |
| <groupId>org.example</groupId> |
| <artifactId>spring_0824_KTLX2</artifactId> |
| <version>1.0-SNAPSHOT</version> |
| <packaging>war</packaging> |
| |
| <name>spring_0824_KTLX2 Maven Webapp</name> |
| |
| <url>http://www.example.com</url> |
| |
| <properties> |
| <maven.compiler.source>8</maven.compiler.source> |
| <maven.compiler.target>8</maven.compiler.target> |
| <servlet.version>4.0.1</servlet.version> |
| <jsp.version>2.2</jsp.version> |
| <jstl.version>1.2</jstl.version> |
| <spring.version>5.3.14</spring.version> |
| <commons-dbcp.version>1.4</commons-dbcp.version> |
| <mybatis.version>3.4.6</mybatis.version> |
| <mybatis-spring.version>1.3.3</mybatis-spring.version> |
| <mysql-connector-java.version>8.0.11</mysql-connector-java.version> |
| <fastjson.version>2.0.10</fastjson.version> |
| </properties> |
| |
| <dependencies> |
| |
| |
| <dependency> |
| <groupId>javax.servlet</groupId> |
| <artifactId>javax.servlet-api</artifactId> |
| <version>${servlet.version}</version> |
| |
| <scope>provided</scope> |
| </dependency> |
| <dependency> |
| <groupId>javax.servlet.jsp</groupId> |
| <artifactId>jsp-api</artifactId> |
| <version>${jsp.version}</version> |
| |
| <scope>provided</scope> |
| </dependency> |
| <dependency> |
| <groupId>jstl</groupId> |
| <artifactId>jstl</artifactId> |
| <version>${jstl.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>org.springframework</groupId> |
| <artifactId>spring-webmvc</artifactId> |
| <version>${spring.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>org.springframework</groupId> |
| <artifactId>spring-context</artifactId> |
| <version>${spring.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>org.springframework</groupId> |
| <artifactId>spring-jdbc</artifactId> |
| <version>${spring.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>commons-dbcp</groupId> |
| <artifactId>commons-dbcp</artifactId> |
| <version>${commons-dbcp.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>org.mybatis</groupId> |
| <artifactId>mybatis-spring</artifactId> |
| <version>${mybatis-spring.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>org.mybatis</groupId> |
| <artifactId>mybatis</artifactId> |
| <version>${mybatis.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>com.github.pagehelper</groupId> |
| <artifactId>pagehelper</artifactId> |
| <version>5.1.0</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>mysql</groupId> |
| <artifactId>mysql-connector-java</artifactId> |
| <version>${mysql-connector-java.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>com.github.abel533</groupId> |
| <artifactId>mapper</artifactId> |
| <version>3.0.1</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>com.fasterxml.jackson.core</groupId> |
| <artifactId>jackson-databind</artifactId> |
| <version>2.13.2.2</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>com.alibaba</groupId> |
| <artifactId>fastjson</artifactId> |
| <version>${fastjson.version}</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>org.projectlombok</groupId> |
| <artifactId>lombok</artifactId> |
| <version>1.18.22</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>junit</groupId> |
| <artifactId>junit</artifactId> |
| <version>4.13</version> |
| |
| |
| |
| </dependency> |
| </dependencies> |
| </project> |
| |
复制
Category:
| package com.aaa.demo.entity; |
| |
| import lombok.Data; |
| |
| import javax.persistence.Id; |
| import javax.persistence.Table; |
| |
| @Data |
| @Table(name = "category") |
| public class Category { |
| @Id |
| private Integer categoryId; |
| private String categoryName; |
| |
| } |
| |
复制
CommonResult :
| package com.aaa.demo.entity; |
| |
| public class CommonResult { |
| |
| private Integer code; |
| |
| private String msg; |
| |
| private Integer count; |
| |
| private Object data; |
| |
| public CommonResult() { |
| } |
| |
| public CommonResult(Integer code, String msg, Integer count, Object data) { |
| this.code = code; |
| this.msg = msg; |
| this.count = count; |
| this.data = data; |
| } |
| |
| |
| public static CommonResult success(Integer count,Object data){ |
| return new CommonResult(0,"success",count,data); |
| } |
| |
| |
| public static CommonResult success(){ |
| return new CommonResult(0,"success",null,null); |
| } |
| |
| |
| public static CommonResult fail(){ |
| return new CommonResult(1,"fail",null,null); |
| } |
| |
| |
| public Integer getCode() { |
| return code; |
| } |
| |
| public void setCode(Integer code) { |
| this.code = code; |
| } |
| |
| public String getMsg() { |
| return msg; |
| } |
| |
| public void setMsg(String msg) { |
| this.msg = msg; |
| } |
| |
| public Integer getCount() { |
| return count; |
| } |
| |
| public void setCount(Integer count) { |
| this.count = count; |
| } |
| |
| public Object getData() { |
| return data; |
| } |
| |
| public void setData(Object data) { |
| this.data = data; |
| } |
| |
| @Override |
| public String toString() { |
| return "CommonResult{" + |
| "code=" + code + |
| ", msg='" + msg + '\'' + |
| ", count=" + count + |
| ", data=" + data + |
| '}'; |
| } |
| |
| } |
| |
复制
CategoryMapper:
| package com.aaa.demo.mapper; |
| |
| import com.aaa.demo.entity.Category; |
| import com.github.abel533.mapper.Mapper; |
| |
| public interface CategoryMapper extends Mapper<Category> { |
| } |
| |
复制
ICategoryService:
| package com.aaa.demo.service; |
| |
| import com.aaa.demo.entity.Category; |
| |
| import java.util.List; |
| |
| public interface ICategoryService { |
| List<Category> listAll(); |
| int insert(Category category); |
| int update(Category category); |
| int delete(Integer categoryId); |
| } |
| |
复制
CategoryServiceImpl:
| package com.aaa.demo.service.impl; |
| |
| import com.aaa.demo.entity.Category; |
| import com.aaa.demo.mapper.CategoryMapper; |
| import com.aaa.demo.service.ICategoryService; |
| import org.springframework.beans.factory.annotation.Autowired; |
| import org.springframework.stereotype.Service; |
| |
| import java.util.List; |
| |
| @Service |
| public class CategoryServiceImpl implements ICategoryService { |
| @Autowired |
| private CategoryMapper categoryMapper; |
| @Override |
| public List<Category> listAll() { |
| return categoryMapper.select(null); |
| } |
| |
| @Override |
| public int insert(Category category) { |
| return categoryMapper.insert(category); |
| } |
| |
| @Override |
| public int update(Category category) { |
| return categoryMapper.updateByPrimaryKey(category); |
| } |
| |
| @Override |
| public int delete(Integer categoryId) { |
| return categoryMapper.deleteByPrimaryKey(categoryId); |
| } |
| } |
| |
复制
CategoryController:
| package com.aaa.demo.controller; |
| |
| import com.aaa.demo.entity.Category; |
| import com.aaa.demo.service.ICategoryService; |
| import org.springframework.beans.factory.annotation.Autowired; |
| import org.springframework.stereotype.Controller; |
| import org.springframework.web.bind.annotation.RequestMapping; |
| import org.springframework.web.bind.annotation.RestController; |
| |
| import java.util.List; |
| |
| @RestController |
| @RequestMapping("/category") |
| public class CategoryController { |
| @Autowired |
| private ICategoryService iCategoryService; |
| |
| @RequestMapping("/list") |
| public List<Category> list(){ |
| return iCategoryService.listAll(); |
| } |
| |
| @RequestMapping("/add") |
| public int add(Category category){ |
| System.out.println("======add======="); |
| System.out.println(category); |
| return iCategoryService.insert(category); |
| } |
| |
| @RequestMapping("/update") |
| public int update(Category category){ |
| System.out.println("======update======="); |
| System.out.println(category); |
| return iCategoryService.insert(category); |
| } |
| |
| @RequestMapping("/delete") |
| public int delete(Integer categoryId){ |
| System.out.println("======delete========"); |
| System.out.println(categoryId); |
| return iCategoryService.delete(categoryId); |
| } |
| } |
| |
复制
db.properties:
| jdbc.driver=com.mysql.cj.jdbc.Driver |
| jdbc.url=jdbc:mysql://localhost:3306/70813_db?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8&allowPublicKeyRetrieval=true |
| jdbc.username=root |
| jdbc.password=123456 |
复制
mybatis-config.xml:
| <?xml version="1.0" encoding="UTF-8" ?> |
| <!DOCTYPE configuration |
| PUBLIC "-//mybatis.org//DTD Config 3.0//EN" |
| "http://mybatis.org/dtd/mybatis-3-config.dtd"> |
| <configuration> |
| <settings> |
| |
| <setting name="logImpl" value="STDOUT_LOGGING"/> |
| |
| <setting name="mapUnderscoreToCamelCase" value="true"/> |
| </settings> |
| |
| <plugins> |
| |
| <plugin interceptor="com.github.pagehelper.PageInterceptor"> |
| |
| <property name="offsetAsPageNum" value="true"/> |
| |
| |
| |
| <property name="rowBoundsWithCount" value="true"/> |
| |
| <property name="reasonable" value="true"/> |
| </plugin> |
| <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor"> |
| |
| |
| |
| <property name="mappers" value="com.github.abel533.mapper.Mapper" /> |
| </plugin> |
| </plugins> |
| |
| |
| </configuration> |
复制
spring-mybatis.xml:
| <?xml version="1.0" encoding="UTF-8"?> |
| <beans xmlns="http://www.springframework.org/schema/beans" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xmlns:context="http://www.springframework.org/schema/context" |
| xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> |
| |
| |
| <context:component-scan base-package="com.aaa.demo.service"/> |
| |
| |
| <context:property-placeholder location="classpath:db.properties"/> |
| |
| <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" |
| destroy-method="close"> |
| |
| <property name="driverClassName" value="${jdbc.driver}"/> |
| <property name="url" value="${jdbc.url}"/> |
| <property name="username" value="${jdbc.username}"/> |
| <property name="password" value="${jdbc.password}"/> |
| </bean> |
| |
| |
| |
| |
| |
| <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> |
| |
| <property name="dataSource" ref="ds"/> |
| |
| <property name="typeAliasesPackage" value="com.aaa.demo.entity"/> |
| |
| <property name="configLocation" value="classpath:mybatis-config.xml"/> |
| |
| <property name="mapperLocations" value="classpath:com/mapper/*.xml"/> |
| </bean> |
| |
| |
| |
| <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> |
| |
| <property name="basePackage" value="com.aaa.demo.mapper"/> |
| |
| <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> |
| </bean> |
| |
| </beans> |
复制
spring-mvc.xml:
| <?xml version="1.0" encoding="UTF-8"?> |
| <beans xmlns="http://www.springframework.org/schema/beans" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xmlns:context="http://www.springframework.org/schema/context" |
| xmlns:mvc="http://www.springframework.org/schema/mvc" |
| xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> |
| |
| |
| <context:component-scan base-package="com.aaa.demo.controller"/> |
| |
| |
| |
| |
| |
| <mvc:annotation-driven/> |
| |
| |
| <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> |
| |
| <property name="prefix" value="/WEB-INF/page/"/> |
| |
| <property name="suffix" value=".jsp"/> |
| </bean> |
| |
| |
| <mvc:default-servlet-handler/> |
| |
| </beans> |
复制
web.xml:
| <?xml version="1.0" encoding="UTF-8"?> |
| <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" |
| version="4.0"> |
| |
| |
| <listener> |
| <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> |
| </listener> |
| |
| <context-param> |
| <param-name>contextConfigLocation</param-name> |
| <param-value>classpath:spring-mybatis.xml</param-value> |
| </context-param> |
| |
| |
| <filter> |
| <filter-name>characterEncodingFilter</filter-name> |
| <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> |
| <init-param> |
| <param-name>encoding</param-name> |
| <param-value>UTF-8</param-value> |
| </init-param> |
| </filter> |
| <filter-mapping> |
| <filter-name>characterEncodingFilter</filter-name> |
| <url-pattern>/*</url-pattern> |
| </filter-mapping> |
| |
| |
| |
| <servlet> |
| <servlet-name>springMVC</servlet-name> |
| <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> |
| <init-param> |
| |
| |
| |
| <param-name>contextConfigLocation</param-name> |
| <param-value>classpath:spring-mvc.xml</param-value> |
| </init-param> |
| </servlet> |
| <servlet-mapping> |
| <servlet-name>springMVC</servlet-name> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <url-pattern>/</url-pattern> |
| </servlet-mapping> |
| </web-app> |
复制
category.jsp:
| <%-- |
| Created by IntelliJ IDEA. |
| User: 33154 |
| Date: 2022/8/25 |
| Time: 14:34 |
| To change this template use File | Settings | File Templates. |
| --%> |
| <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
| <html> |
| <head> |
| <title>Title</title> |
| </head> |
| <body> |
| <div>分类数据</div> |
| <div id="category"> |
| |
| </div> |
| |
| <%--添加表单--%> |
| <form id="btnAddFrm"> |
| 分类名称: |
| <input type="text" id="categoryName" name="categoryName"/> |
| <input type="button" value="添加" id="btnAdd"/> |
| </form> |
| |
| <%--修改表单--%> |
| <form id="btnUpdateFrm"> |
| 分类编号: |
| <input type="text" id="categoryId" name="categoryId"/> |
| 分类名称: |
| <input type="text" name="categoryName"/> |
| <input type="button" value="修改" id="btnUpdate"/> |
| </form> |
| |
| <%--删除表单--%> |
| <form id="btnDeleteFrm"> |
| 分类编号: |
| <input type="text" name="categoryId"/> |
| <input type="button" value="删除" id="btnDelete"/> |
| </form> |
| |
| |
| <script type="text/javascript" src="${pageContext.request.contextPath}/assets/jq/jquery-1.12.4.min.js"></script> |
| <script type="text/javascript"> |
| $.ajax({ |
| url:"${pageContext.request.contextPath}/category/list", |
| type:"get", |
| success:function (res){ |
| console.log(res); |
| for(var i=0;i<res.length;i++){ |
| $("#category").append("<p>"+res[i].categoryId+" "+res[i].categoryName+"</p>") |
| } |
| } |
| }) |
| |
| |
| $("#btnAdd").click(function (){ |
| |
| alert($("#btnAddFrm").serialize()) |
| $.ajax({ |
| url: "${pageContext.request.contextPath}/category/add", |
| data:$("#btnAddFrm").serialize(), |
| type: "post", |
| success:function (res){ |
| alert(res); |
| } |
| }) |
| }) |
| |
| |
| $("#btnUpdate").click(function (){ |
| |
| alert($("#btnUpdateFrm").serialize()) |
| $.ajax({ |
| url:"${pageContext.request.contextPath}/category/update", |
| data: $("#btnUpdateFrm").serialize(), |
| type:"post", |
| success:function (res){ |
| alert(res); |
| } |
| }) |
| }) |
| |
| |
| $("#btnDelete").click(function (){ |
| |
| alert($("#btnDeleteFrm").serialize()) |
| $.ajax({ |
| url:"${pageContext.request.contextPath}/category/delete", |
| data: $("#btnDeleteFrm").serialize(), |
| type:"post", |
| success:function (res){ |
| alert(res); |
| } |
| }) |
| }) |
| </script> |
| |
| |
| |
| </body> |
| </html> |
| |
| |
| |
复制
关键点参考:


注意:

ajax中的数据传输:



ajax中的get/post:



引入通用mapper:(可以理解为引入“接口实现类里的各种方法”)

绑定表/id实现“通过主键更新/删除的方法”:


接口插件:
