Spring SSM整合 CRUD整合

整体架构如下

  1. 加入spring,springmvc,mybaits,spring-mybatis四种包

 如果用maven   pom文件核心依赖如下

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <!-- spring核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>


<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>


<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>


<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
<version>3.0.13.Final</version>
</dependency>


<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.13.Final</version>
</dependency>


<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.6</version>
</dependency>


<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>


<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>


<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>


<!-- 导入dbcp的jar包,使用C3P0 -->
<dependency>
             <groupId>com.mchange</groupId>
             <artifactId>c3p0</artifactId>
             <version>0.9.5.2</version>
        </dependency>


<!-- JSTL标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>


<!-- 日志记录jar -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>


<!-- 格式化对象,方便输出日志 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>


<!-- 映入JSON -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>


<!-- 工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>


<!-- 上传组件包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.8</version>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
    

 

2.spring配置文件, 代码如下

  •    applicationContext.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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.1.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">

	<context:component-scan base-package="com.baidu.bookstore.*"></context:component-scan>

	<!-- 数据连接池 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8"></property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
	</bean>
		
	<!-- 不需要定义SqlSessionFactory,注意configLocation当您使用MapperFactoryBean -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 自动扫描doamin目录, 省掉Configuration.xml里的手工配置 -->
		<property name="typeAliasesPackage" value="com.baidu.bookstore.domain" /><!-- 
			以类名当别名 -->
		<property name="dataSource" ref="dataSource" />
<!-- 		<property name="configLocation" value="classpath:mybatis-config.xml" /> -->
		<property name="mapperLocations" value="classpath:com/baidu/bookstore/mapper/*Mapper.xml" />
	</bean>	
	
	<!-- 扫描映射器 Mapper -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- Mapper接口所在包名,Spring会自动查找其下的Mapper -->
		<property name="basePackage" value="com.baidu.bookstore.mapper" />
	<!-- 		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> -->
	</bean>
	
	<!-- 事务处理 -->	
	<!-- 事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	<!-- 开启事务注解 -->
	<tx:annotation-driven transaction-manager="transactionManager" />
</beans>

 

pom文件中加入的sql依赖是 c3p0

所以数据连接池应该改为

<bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
        <!-- 指定连接数据库的驱动-->  
        <property name="driverClass" value="${jdbc.driver}"/>  
        <!-- 指定连接数据库的URL-->  
        <property name="jdbcUrl" value="${jdbc.url}"/>  
        <!-- 指定连接数据库的用户名-->  
        <property name="user" value="${jdbc.username}"/>  
        <!-- 指定连接数据库的密码-->  
        <property name="password" value="${jdbc.password}"/>  
        <!-- 指定连接池中保留的最大连接数. Default:15-->  
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>  
        <!-- 指定连接池中保留的最小连接数-->  
        <property name="minPoolSize" value="${c3p0.minPoolSize}"/>  
        <!-- 指定连接池的初始化连接数  取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->  
        <property name="initialPoolSize" value="${c3p0.initialPoolSize}"/>  
        <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->  
        <property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>  
        <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->  
        <property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>  
        <!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。  
        	但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.
        	如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->  
        <property name="maxStatements" value="${c3p0.maxStatements}"/>  
        <!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->  
        <property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"/>  
        <property name="testConnectionOnCheckout" value="${c3p0.testConnectionOnCheckout}"/>  
    </bean>

可以简化为

	<!-- 数据连接池 -->
	<bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
        <!-- 指定连接数据库的驱动-->  
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>  
        <!-- 指定连接数据库的URL-->  
        <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test"/>  
        <!-- 指定连接数据库的用户名-->  
        <property name="user" value="root"/>  
        <!-- 指定连接数据库的密码-->  
        <property name="password" value="123456"/>  
	</bean>

 

3.配置 Springmvc文件,代码如下

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.1.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
	http://www.springframework.org/schema/mvc 
	http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">


	<context:component-scan base-package="com.baidu.bookstore.*"></context:component-scan>
	<!-- 开启MVC注解 -->
	<mvc:annotation-driven />
	
	
	<!-- 设置spring:页面转发的路径前缀prefix,后缀suffix -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/" /><!-- 在根目录找 -->
		<property name="suffix" value=".jsp" /><!-- 文件后缀为jsp -->
	</bean>
</beans>

4.  将上面所有的配置文件加载到web容器中(就是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>bookmvc</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 载入SPRING文件 -->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
  
  <!-- 载入springmvc文件 -->
	<servlet>
		<servlet-name>DispatchServlet</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>DispatchServlet</servlet-name>
		<url-pattern>*.action</url-pattern><!-- 此处所有请求都由SPRINGMVC处理 -->
	</servlet-mapping>
  
  
</web-app>

实现CRUD

整体项目结构如下

 

Book

public class Book implements Serializable {
	
	private static final long serialVersionUID = 1L;
	private String bookid;
	private String bookname;
	private String bookimg;
	private double bookprice;
    //get set 方法省略

BookMapper

public interface BookMapper {
	//分页查询
	public List<Book> getBook(int pageIndex);
	
	//添加
	public void addBook(Book book);
	
	//删除
	public void deleteBook(String bookid);
	
	//修改
	public void updateBook(Book book);
}

BookMapper.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.baidu.bookstore.mapper.BookMapper">

	<select id="getBook" parameterType="int" resultType="Book">
		select 
			bookid,bookname,bookprice,bookimg
		from 
			book
		limit #{pageIndex},3	 
	</select>
	<insert id="addBook" parameterType="Book">
		insert into
			book
		<trim  prefix="(" suffix=")" suffixOverrides=",">
			<if test="bookid!=null">
				bookid,
			</if>
			<if test="bookname!=null">
				bookname,
			</if>
			<if test="bookprice!=0">
				bookprice,
			</if>
			<if test="bookimg!=null">
				bookimg
			</if>	
		</trim>
		values
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="bookid!=null">
				#{bookid},
			</if>
			<if test="bookname!=null">
				#{bookname},
			</if>
			<if test="bookprice!=0">
				#{bookprice},
			</if>
			<if test="bookimg!=null">
				#{bookimg}
			</if>
		</trim>
	
	</insert>
	
	<delete id="deleteBook" parameterType="String">
	delete from
		book
	where
	bookid = #{bookid}
	</delete>
	
	
	<update id="updateBook" parameterType="Book">
		update 
			book
		<set>
			<if test="bookname!=null">
				bookname=#{bookname},
			</if>
			<if test="bookprice!=0">
				bookprice=#{bookprice},
			</if>
			<if test="bookimg!=null">
				bookimg=#{bookimg}
			</if>
		</set>
		where 
			bookid=#{bookid}
	</update>
	
</mapper>

BookinfoService

public interface BookinfoService {
	//分页
	public List<Book> getPagedBookinfos(int pageIndex);
	
	//添加
	public void addBook(Book book);
	
	//删除
	public void deleteBook(String bookid);
	
	//修改
	public void updateBook(Book book);
	
}

BookinfoServiceImpl

@Service("bookinfoService")
public class BookinfoServiceImpl implements BookinfoService{
	
	@Autowired
	private BookMapper bookMapper ;
	
	@Override
	public List<Book> getPagedBookinfos(int pageIndex) {
		return bookMapper.getBook(pageIndex);
	}
	
	//添加
	@Override
	public void addBook(Book book) {
		 bookMapper.addBook(book);		
	}
	//删除
	@Override
	public void deleteBook(String bookid) {
		bookMapper.deleteBook(bookid);
		
	}
	
	//修改
	@Override
	public void updateBook(Book book) {
		bookMapper.updateBook(book);
		
	}
}

BookinfoController

@Controller
@RequestMapping("/bookinfo")
public class BookinfoController {

	@Autowired
	private BookinfoService bookinfoService;
	
	//查询
	@RequestMapping("/page")
	public String page(ModelMap map,HttpServletRequest request) {
		int pageIndex = 1;
		if (null != request.getParameter("pageIndex")) {
			pageIndex = Integer.parseInt(request.getParameter("pageIndex"));
		}
		map.addAttribute("books", bookinfoService.getPagedBookinfos((pageIndex-1)*3));
		map.addAttribute("pageIndex",pageIndex);
		return "index";
	}
	
	//添加
	@RequestMapping("/add")
	public String add(Book book) {
		bookinfoService.addBook(book);
		return "redirect:/bookinfo/page.action";
	}
	
	//删除
	@RequestMapping("/delete")
	public String delete(Book book) {
		bookinfoService.deleteBook(book.getBookid());
		return "redirect:/bookinfo/page.action";
	}
	
	//修改
	@RequestMapping("/update")
	public String update(Book book) {
		bookinfoService.updateBook(book);
		return "redirect:/bookinfo/page.action";
	}

}

index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	<table border="1" width="80%">
		<tr>
			<td>编号</td>
			<td>书名</td>
			<td>价格</td>
			<td>图片</td>
			<td colspan="2">操作</td>
		</tr>
		<c:forEach var="book" items="${books}">
			<tr>
				<td>${book.bookid }</td>
				<td>${book.bookname }</td>
				<td>${book.bookprice }</td>
				<td><img src="${book.bookimg }"/></td>
				<td>
					<a href="delete.action?bookid=${book.bookid}">删除</a>
				</td>
				<td>
					<a href="../update.jsp?bookid=${book.bookid}&bookname=${book.bookname }&bookprice=${book.bookprice }&bookimg=${book.bookimg}">修改</a>
				</td>
			</tr>
		</c:forEach>
		<tr>
		<td><a href="page.action?pageIndex=${pageIndex - 1}">上一页</a></td>
		<td><a href="">当前  ${pageIndex}页</a></td>
		<td><a href="page.action?pageIndex=${pageIndex + 1}">下一页</a></td>
			<td colspan="6" align="right"><a href="../add.jsp">添加一行</a></td>
		</tr>
	</table>
</body>
</html>

add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加</title>
</head>
<body>
	<form action="bookinfo/add.action" method="post">
	<table>
		<tr>
			<td>编号</td>
			<td>书名</td>
			<td>价格</td>
			<td>图片</td>
			<td>操作</td>
		</tr>
		<tr>
			<td><input type="text" name="bookid"></td>
			<td><input type="text" name="bookname"></td>
			<td><input type="text" name="bookprice"></td>
			<td><input type="text" name="bookimg"></td>
			<td><input type="text" name="bookid"></td>
			<td><input type="submit" value="提交"></td>
		</tr>
	
	</table>
	
	</form>
</body>
</html>

update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改页面</title>
</head>
<body>
	<form action="bookinfo/update.action" method="post">
	<table>
		<tr>
			<td>编号</td>
			<td>书名</td>
			<td>价格</td>
			<td>图片</td>
			<td>操作</td>
		</tr>
		<tr>
			<td><input type="text" name="bookid" value="${param.bookid }"></td>
			<td><input type="text" name="bookname" value="${param.bookname}"></td>
			<td><input type="text" name="bookprice" value="${param.bookprice}"></td>
			<td><input type="text" name="bookimg" value="${param.bookimg}"></td>
			<td><input type="submit" value="修改"></td>
		</tr>
	
	</table>
	
	</form>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值