搭建SSM框架并实现增删查改功能

搭建SSM框架并实现增删查改功

  • 前言
    • 一、概述
    • 二、搭建一个SSM的过程
    • 三、配置相关文件
    • 四、在Java下创建测试类
    • 五、在webapp下创建html页面

要一直做勤快的人,加油

前言

使用eclipse+tomcat7+mysq+maven实现SSM框架下的增删查改功能,把自己的知识整理一下,方便以后查阅。

一、概述

SSM框架在项目开发中经常使用到,相比于SSH框架,它在近几年的开发中运用的更加广泛。

1.Spring作为一个分层的轻量级开源框架,解决了项目中的耦合问题。
两个核心:IOC(控制反转)和AOP(面向切面编程)。
同时,在也是我们在项目中我们经常使用的。

2.SpringMVC是Spring实现的一个Web层,相当于Struts的框架,但是比Struts更加灵活和强大!

3.Mybatis是 一个动态SQL语句的持久层的框架,它对JDBC的操作数据库的过程进行封装,使开发者只需关注SQL本身。在使用上相比Hibernate更加灵活,可以控制sql的编写,使用 XML或注解进行相关的配置!

这里简单介绍一下,更多信息请上百度搜索。

二、搭建一个SSM的过程

1.使用Maven管理项目

使用Maven在Eclipse中创建一个webapp的项目 ,具体的创建过程不做演示,如有不会创建的创建项目创建maven项目
也可以使用Maven命令进行创建,在Dos窗口进入指定的目录,执行下面命令

mvn archetype:create -DgroupId=org.ssm.dufy -DartifactId=ssm-demo
-DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

使用命令要注意,系统安装了Maven,并配置好了环境变量!(这个方法我没用过,网上看的,扩展一下自己)

2.导入项目(命名创建),添加依赖

导入项目是IDE中,或者直接在IDE创建,一般默认有【src/main/java】,手动创建【src/test/resources】、【src/test/java】文件夹。
注意导入maven项目和导入javaWeb项目有点不太一样。

数据请求过程如下:
1.客户端通过ajax发送请求;
2.控制层controller接收请求;
3.获取mysql数据,转为Json格式并返回给客户端;
4.客户端接收数据后显示。
项目结构如下:
搭建SSM框架并实现增删查改功能_第1张图片
然后直接在pom.xml中配置包的依赖

<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>com.wcx</groupId>
	<artifactId>SSMR0308</artifactId>
	<version>1.0</version>
	<packaging>war</packaging>
	<!-- 版本管理 -->
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<jackson.version>2.5.0</jackson.version>
		<spring.version>4.3.16.RELEASE</spring.version>
		<aop.version>1.9.1</aop.version>
		<mybatis.version>3.4.6</mybatis.version>
	</properties>
	<dependencies>
		<!-- spring相关依赖包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- aop相关依赖包 -->
		<dependency>
			<groupId>aopalliance</groupId>
			<artifactId>aopalliance</artifactId>
			<version>1.0</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aop.version}</version>
		</dependency>
		<!-- <dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.9.1</version>
		</dependency> -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${aop.version}</version>
		</dependency>
		<!-- mybatis依赖包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<!-- mysql数据库驱动包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.13</version>
			<scope>runtime</scope>
		</dependency>
		<!-- dbcp数据库连接池包 -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
		<!-- spring与mybatis整合包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- jsp标准标签库包 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- jedis依赖包 -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.9.0</version>
		</dependency>
		<!-- mybatis 包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
		<!--mybatis spring 插件 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>
		<!-- mysql连接 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.6</version>
		</dependency>
		<!-- 数据源 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.12</version>
		</dependency>
		<!-- servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>3.0-alpha-1</version>
			<scope>provided</scope>
		</dependency>
        <!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- json -->
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
	</dependencies>

</project>

三、配置相关文件

在resources文件下创建相关文件

1.配置jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

2.配置ApplicationContent.xml文件
这个文件就是用来完成spring和mybatis的整合的。这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库。

<?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-4.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	<!-- 自动扫描 -->
	<context:component-scan base-package="com.wcx.service" />
	<!-- 引入配置文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />
	<!-- 配置数据库连接池 -->
	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
		init-method="init" destroy-method="close">
		<property name="driverClassName" value="${jdbc.driver}"></property>
		<property name="url" value="${jdbc.url}"></property>
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<!-- 配置初始化大小、最小、最大 -->
		<property name="initialSize" value="3" />
		<property name="minIdle" value="3" />
		<property name="maxActive" value="20" />
		<!-- 配置获取连接等待超时的时间 -->
		<property name="maxWait" value="60000" />
		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="60000" />
		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="300000" />
		<property name="validationQuery" value="SELECT 'x'" />
		<property name="testWhileIdle" value="true" />
		<property name="testOnBorrow" value="false" />
		<property name="testOnReturn" value="false" />
		<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
		<property name="poolPreparedStatements" value="true" />
		<property name="maxPoolPreparedStatementPerConnectionSize"
			value="20" />
		<!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->
		<property name="filters" value="stat" />
	</bean>
	<!-- 配置mybatis工厂 spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
	<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 自动扫描mybatis配置文件 日志 -->
		<!-- <property name="configLocation" value="classpath:mybatis-config.xml"></property> -->
		<!-- 自动扫描mapping.xml文件 -->
		<property name="mapperLocations" value="classpath:mapper/*.xml" />
	</bean>
	<!-- 配置增强版的动态dao DAO接口所在包名,Spring会自动查找其下的类 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> -->
		<property name="basePackage" value="com.wcx.dao" />
	</bean>
	<!-- 配置事务管理 -->
	<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
</beans>

3.配置Springmvc.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:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	<!-- 注解扫描器 -->
	<context:component-scan base-package="com.wcx.controller"></context:component-scan>
	<!-- 开启注解 -->
	<mvc:annotation-driven></mvc:annotation-driven>
	<!-- 静态资源处理 -->
	<mvc:resources location="/html/" mapping="/html/**" />
	<mvc:resources location="/js/" mapping="/js/**" />
	<mvc:resources location="/images/" mapping="/images/**" />
	<mvc:resources location="/css/" mapping="/css/**" />
	<mvc:resources location="/resources/" mapping="/resources/**" />
	<!-- 拦截器配置 -->
	<mvc:interceptors> 
	<!-- 注册1个登录拦截器  -->
	  <mvc:interceptor> 
	    <!-- 对哪些资源有拦截作用 如果不配置或,将拦截所有的controller -->
	    <mvc:mapping path="/**" /> 
	    <!-- 对哪些资源没有拦截作用 -->
	    <mvc:exclude-mapping path="/**/login.html" /> 
	    <mvc:exclude-mapping path="/**/reg.html" /> 
	    <!-- 哪个Bean是拦截器 -->
	    <bean  class="com.wcx.Interceptor.UserInterceptor" /> 
	   </mvc:interceptor>
    </mvc:interceptors> 
</beans>
	
	
	

4.配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>SSM_CRUD1130</display-name>
	<!-- 默认主页 -->
	<welcome-file-list>
		<welcome-file>login.html</welcome-file>
	</welcome-file-list>
	<!-- Spring配置文件 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:ApplicationContent.xml</param-value>
	</context-param>
	<!-- Spring监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
	<!-- 添加对Spring MVC的支持 -->
	<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:Springmvc.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>Springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

5.创建UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wcx.dao.UserDao">
	<!-- 增删改没有返回值 -->
	<!-- 登录 -->
	<select id="login" parameterType="map" resultType="map">
		select * from
		user where name=#{name} and password=#{password}
	</select>
	<!-- 显示用户名到页面 -->
	<select id="SelectName" parameterType="map" resultType="map">
	</select>
	<!-- 注册 和显示用户名到页面 -->
	<select id="SelectByName" parameterType="map" resultType="map">
		select
		* from user where name=#{name}
	</select>
	<insert id="Reg" parameterType="map">
		insert into
		user(name,password,lock_flag,failure_num,login_time)
		values(#{name},#{password},'0',0,'0000-00-00 00:00:00')
	</insert>
	<!-- 全查询 -->
	<select id="SelectAll" parameterType="map" resultType="map">
		select *
		from books
	</select>
	<!-- 根据书名查询 -->
	<select id="SelectByBNAME" parameterType="map" resultType="map">
		select * from books where BNAME like "%"#{find_BNAME}"%"
	</select>
	<!-- 根据id删除 -->
	<delete id="DeleteById" parameterType="String">
		delete from books where
		BON=#{BON}
	</delete>
	<!-- 根据id修改 -->
	<update id="UpdateById" parameterType="map">
		update books set
		BNAME=#{BNAME},AUTHOR=#{AUTHOR},PRICE=#{PRICE},QUANITITY=#{QUANITITY}
		where BON=#{BON}
	</update>
	<!-- 添加书籍信息 -->
	<insert id="InsertData" parameterType="map">
		insert into
		books(BON,BNAME,AUTHOR,PRICE,QUANITITY)
		values(#{BON},#{BNAME},#{AUTHOR},#{PRICE},#{QUANITITY})
	</insert>
	

	
</mapper>

四、在Java下创建测试类

1.创建service接口

package com.wcx.service;

import java.util.List;
import java.util.Map;

import org.springframework.web.bind.annotation.RequestParam;

/**
 * @author xiang
 * @versioon 2019年11月30日 上午9:54:57 业务层接口模块
 **/
public interface UserService {
	// 登录 相当于根据账号和密码查询 用map传值
	public Map login(Map map);

	// 根据用户状态查询是否被锁定
	public Map selectlock_flag(Map map);

	// 先查询一下账号是否存在,不存在则注册 显示用户名到页面
	public Map SelectByName(Map map);

	// 注册
	public int Reg(Map map);

	// 全查询
	public List<Map> SelectAll(Map map);

	// 根据书名查询
	public List<Map> SelectByBNAME(Map map);

	// 根据id删除
	public int DeleteById(String BON);

	// 根据id修改
	public int UpdateById(Map map);

	// 添加书籍信息
	public int InsertData(Map map);
}

2.创建service业务层实现类

package com.wcx.service.Imp;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.wcx.dao.UserDao;
import com.wcx.service.UserService;

/**
 * @author xiang
 * @versioon 2019年11月30日 上午9:55:48 业务层实现类模块
 **/
@Service("userService")
public class UserServiceImp implements UserService {
	@Autowired
	UserDao userDao;

	public UserServiceImp() {
		System.out.println("UserServiceImp构造方法。。。");
	}

	// 登录的方法
	@Override
	public Map login(Map map) {
		// TODO Auto-generated method stub
		return userDao.login(map);
	}

	// 根据用户状态查询是否被锁定
	@Override
	public Map selectlock_flag(Map map) {
		return userDao.selectlock_flag(map);
	}

	// 登录后修改状态为0
	@Override
	public int Updatelock_flag(Map map) {
		return userDao.Updatelock_flag(map);
	}

	// 根据name修改锁定时间
	@Override
	public int Updatelock_time(Map map) {
		return userDao.Updatelock_time(map);
	}

	// 获取数据库被锁定的时间
	@Override
	public Map selectlock_time(Map map) {
		return userDao.selectlock_time(map);
	}

	// 解锁定后修改状态为0
	@Override
	public int Updatelock_flag1(Map map) {
		return userDao.Updatelock_flag1(map);
	}

	// 解锁定后修改时间为0
	@Override
	public int Updatelock_time1(Map map) {
		return userDao.Updatelock_time1(map);
	}

	// 注册前的查询方法 显示用户名到页面
	@Override
	public Map SelectByName(Map map) {
		return userDao.SelectByName(map);
	}

	// 注册的方法
	@Override
	public int Reg(Map map) {
		return userDao.Reg(map);
	}

	// 全查询
	@Override
	public List<Map> SelectAll(Map map) {
		return userDao.SelectAll(map);
	}
**********此处省略重复步骤**********

3.创建controller控制器

package com.wcx.controller;

import java.io.ByteArrayOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.wcx.Utils.excel.AppFileUtils;
import com.wcx.Utils.excel.ExportListExcelUtils;
import com.wcx.Utils.excel.ExprotUtils;
import com.wcx.bean.GetBean;
import com.wcx.dao.RedisDao;
import com.wcx.service.UserService;

import net.sf.json.JSONArray;

/**
 * @author xiang
 * @versioon 2019年11月30日 上午10:00:46 @Scope("prototype") 访问若在一人以上需设置成多列
 * @RequestMapping return返回值是默认解析为跳转路径
 * @ResponseBody 将java对象转为json格式的数据。若没有这个转化的话,在前台得到的是Object对象
 *               在@RequestMapping下添加@ResponseBody注解后不会解析成跳转地址,会解析成相应的json格式的对象、集合字符串或xml等直接返回给前台
 *               可通过ajax的success:function(data){} data直接获取
 * @RequestParam 常用来处理简单类型的绑定 value 前端传过来的参数名 必传参数
 **/
@Controller("userController")
@Scope("prototype") // 若是有多人访问这个接口则需要使用,若只有一人则无需使用
@RequestMapping("xiang") // 加这个相当于又加了一层路径 /xiang/login
public class UserController {
	@Autowired
	UserService userservice;

	// 定义一个变量用来记录登录的次数
	private static int failure_num = 0;

	// 定义一个map接收传入session中的数据
	public static Map<Object, String> map2 = new HashMap<Object, String>();
	// 获取redis
	RedisDao redisDao = (RedisDao) GetBean.getApplicationContext().getBean("RedisDao");

	public UserController() {
		System.out.println("UserController层构造方法。。。");
	}

	// 显示用户名到页面
	@RequestMapping(value = "/showname", method = RequestMethod.POST, produces = {
			"application/json;charset=UTF-8" })
	@ResponseBody
	public String showname(HttpServletRequest request) {
		String name = (String) request.getSession().getAttribute("Name");
		return name;
	}

	// 注册
	@RequestMapping(value = "/reg", method =  RequestMethod.POST)
	@ResponseBody
	public String reg(@RequestParam Map map) {
		// 调用service层的注册前的查询方法
		Map selectByName = userservice.SelectByName(map);
		// 判断
		if (selectByName != null) {
			return "reged";
		} else {
			// 调用service层注册的方法
			int reg = userservice.Reg(map);
			if (reg != 0) {
				return "success";
			} else {
				return "false";
			}
		}
	}

	/*
	 * 如果需要传中文到前端, 必须在 RequestMapping 中配置produces属性,里面的值得看项目的前端需要的数据的类型。视情况而定。
	 */
	// 全查询 数据回显到首页
	@RequestMapping(value = "/selectAll", method = { RequestMethod.POST, RequestMethod.GET }, produces = {
			"application/json;charset=UTF-8" })
	@ResponseBody
	public List<Map> selectAll(@RequestParam Map map) {
		// 调用service层的全查询方法
		List<Map> list = userservice.SelectAll(map);
		// 把获取到的数据转换成json类型
		JSONArray json = JSONArray.fromObject(list);
		String data = json.toString();// 将json对象转化为字符串
		return list;
	}

	// 根据书名查询 数据回显到首页
	@RequestMapping(value = "/selectByBNAME", method = { RequestMethod.POST,
			RequestMethod.GET }, produces = "text/html;charset=UTF-8")
	@ResponseBody
	public String selectByBNAME(@RequestParam Map map) {
		// 调用service层根据书名查询的方法
		List<Map> list = userservice.SelectByBNAME(map);
			// 把获取到的数据转换成json类型
			JSONArray json = JSONArray.fromObject(list);
			// 将json对象转化为字符串
			String data = json.toString();
			return data;// 把获取的数据返回到页面中,不是用来做判断的依据,是数据
		}
	}

	// 根据id删除
	@RequestMapping(value = "/delete", method = { RequestMethod.POST, RequestMethod.GET })
	@ResponseBody
	public String deleteById(@RequestParam String BON) {
		// 调用service层根据id删除的方法
		int deleteById = userservice.DeleteById(BON);
		// 判断
		if (deleteById != 0) {
			return "success";
		} else {
			return "false";
		}
	}

	// 根据id修改
	@RequestMapping(value = "/update", method = { RequestMethod.POST, RequestMethod.GET }, produces = {
			"application/json;charset=UTF-8" })
	@ResponseBody // 将返回的对象自动转为json格式的数据
	public String updateById(@RequestParam Map map) {
		// 调用service层根据id修改的方法
		int updateById = userservice.UpdateById(map);
		// 判断
		if (updateById != 0) {
			return "success";
		} else {
			return "false";
		}
	}

	// 添加书籍信息
	@RequestMapping(value = "/insertData", method = { RequestMethod.POST, RequestMethod.GET })
	@ResponseBody
	public String insertData(@RequestParam Map<String, String> map) {
		int addData = userservice.InsertData(map);
		if (addData != 0) {
			return "success";
		} else {
			return "false";
		}
	}

五、在webapp下创建html页面

1.创建index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="../js/jquery-3.4.1.js"></script>
<title>首页</title>
</head>
<body>
	<div class="bigbox">
		<form id="table1">
			<div>
				<h1>
					天天图书管理<span></span>
				</h1>
			</div>
			根据书名查询:<input type="text" name="find_BNAME" id="find_BNAME"
				placeholder="请输入要查询的书名" />
			<button type="button" id="findByBNAME">查询</button>
			<a href="addData.html"><button type="button" id="insertbook">添加</button></a>
			<button onclick="distroy()">注销</button>
			<button type="button" id="exportData">导出</button>
			<table id="dataALL" class="data" width="700" cellspacing="0"
				cellpadding="0">
				<tr>
					<th>书籍编号</th>
					<th>书籍名字</th>
					<th>书籍作者</th>
					<th>书籍价格</th>
					<th>书籍销量</th>
					<th>书籍操作</th>
				</tr>
			</table>
			<div>
				<a id="btn0"></a> <input id="pageSize" type="text" size="1"
					maxlength="2" /><a></a> <a id="sjzl"></a> <a href="#" id="btn1">首页</a>
				<a href="#" id="btn2">上一页</a> <a href="#" id="btn3">下一页</a> <a
					href="#" id="btn4">尾页</a> <a>转到 </a> <input id="changePage"
					type="text" size="1" maxlength="4" /> <a></a> <a href="#"
					id="btn5">跳转</a>

			</div>
		</form>
	</div>
</body>
</html>

2.js部分


$(document).ready(function() {
	$.ajax({
		url: "../xiang/selectAll",
		async: false,  //同步
		type: "post",
		data:$("#table1").serialize(),
		dataType: "json",
	    success: function(data) {
	    	//alert(data);
	       if(data==="false"){
	    	   alert("获取数据失败");
	       }else {
			/*字符串转json  eval函数就是实现list、dict、tuple与str之间的转化*/
				for (var i = 0; i < data.length; i++) {//第一层循环获取到各个list
					var trHTML=""
								+data[i].BON+""
								+data[i].BNAME+""
								+data[i].AUTHOR+""
								+data[i].PRICE+""
								+data[i].QUANITITY+"";
					document.getElementById("dataALL").innerHTML+=trHTML;
				}			
		}
	});
});

/*根据id删除*/
function delete1(BON){
	alert("确定要删除?");
	$.ajax({
		async: false,  //同步
		url: "../xiang/delete?BON="+BON,
		type: "post",
		dataType: "text",
	    success:function(data){
	    	var id=BON;
	    	if(data.name==="删除失败"){
	    		layer.msg('成功删除', {icon: 1,shade: [0.5,'#333333'],shadeClose:true},function(index){
					location.href='index.html';
					layer.close(index);
					});
	    		//location.href="index.html";
	    	}else {
	    		location.href="index.html";
			}
	    }
	});
}

至此SSM框架下的CRUD结束,部署项目到tomcat上运行访问。
服务启动成功后输入地址http://localhost:8088/项目名/页面路径 进行测试,页面将展示数据库中查询的信息。

你可能感兴趣的:(mysql,mybatis,spring,ajax)