Spring+SpringMVC+MyBatis的整合详解

来源:互联网 发布:上班看盘小软件 编辑:程序博客网 时间:2024/05/16 01:07

此次整合基于jar进行,各个版本:
Spring4.3.8
SpringMVC4.3.8
MyBatis3.4.2
Tomcat8.0

1、jar包引用

这里写图片描述
下载链接点击下载所需jar包

2、配置文件

主要用到数据库配置:
dbconfig.properties

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/db_ssm?characterEncoding=utf-8jdbc.username=lxjdbc.password=lxjdbc.maxsize=100jdbc.minsize=5jdbc.idletime=60

log4j日志配置:
log4j.properties

# Set root logger level to WARN and append to stdoutlog4j.rootLogger=DEBUG, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n# Print only messages of level ERROR or above in the package noModule.log4j.logger.noModule=FATAL

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:context="http://www.springframework.org/schema/context"    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"    xsi:schemaLocation="        http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/aop        http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx.xsd        http://mybatis.org/schema/mybatis-spring        http://mybatis.org/schema/mybatis-spring.xsd">    <!--Spring +SpringMVC+MyBatis整合 -->    <mybatis:scan base-package="cn.code404.dao"/>    <!--加载数据库的连接配置文件 -->    <context:property-placeholder location="classpath:dbconfig.properties" />    <!--配置数据库来连接池 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"        destroy-method="close">        <!--驱动类全称 -->        <property name="driverClass" value="${jdbc.driverClassName}" />        <!--数据库的url地址 -->        <property name="jdbcUrl" value="${jdbc.url}" />        <!--用户名 -->        <property name="user" value="${jdbc.username}" />        <!--密码 -->        <property name="password" value="${jdbc.password}" />        <!--配置最大的连接数 -->        <property name="maxPoolSize" value="${jdbc.maxsize}"></property>         <!--配置最小的连接数 -->        <property name="minPoolSize" value="${jdbc.minsize}"></property>         <!--配置连接最大空闲时间 -->         <property name="maxIdleTime" value="${jdbc.idletime}"></property>    </bean>    <!--配置Hibernate的SessionFactory -->    <bean id="sessionFactory"    class="org.mybatis.spring.SqlSessionFactoryBean">        <!--1、配置数据库连接池 -->        <property name="dataSource" ref="dataSource"></property>    </bean>    <!--事物管理对象 -->    <bean id="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource" />    </bean>    <!-- 扫描Spring的注解类 -->    <context:component-scan base-package="cn.code404">        <!--如果外面的basepackage包含了控制器所在的包,那么需要排除 -->        <context:exclude-filter type="annotation"        expression="org.springframework.stereotype.Controller" />    </context:component-scan>    <!--aop切面的代理自动生成 -->    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>    <!--使用注解的事物 -->    <tx:annotation-driven transaction-manager="txManager" /></beans>

SpringMVC的配置文件:
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:context="http://www.springframework.org/schema/context"    xmlns:aop="http://www.springframework.org/schema/aop"     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        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/aop        http://www.springframework.org/schema/aop/spring-aop.xsd          http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc.xsd">       <!--扫描控制器所在的包  -->    <context:component-scan base-package="cn.code404.web.controller"/>    <!--放行静态资源  -->    <mvc:annotation-driven/>    <mvc:default-servlet-handler/>    <!--视图解析器,可以设置页面的前缀和后缀  -->    <bean    class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/jsp/"></property>        <property name="suffix" value=".jsp"></property>    </bean></beans>

还有网站的配置信息
web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">  <display-name>ZH_SSM</display-name>  <!--配置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>  <servlet-name>springmvc</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <!--初始化参数设置,加载配置文件  -->  <init-param>  <param-name>contextConfigLocation</param-name>  <!--配置文件的路径,如果不写,默认加载的路径:WEB-INF/servlet-name-servlet.xml  -->  <param-value>classpath:springMVC.xml</param-value>  </init-param>  <!--启动的优先级 值越小越先启动,>0 -->  <load-on-startup>1</load-on-startup>  </servlet>  <!--映射  -->  <servlet-mapping>  <servlet-name>springmvc</servlet-name>  <!--url的匹配规则,定义请求什么样的url触发对应的Servlet-->  <url-pattern>/</url-pattern>  </servlet-mapping></web-app>

3、表的映射类

public class Phone {    private int id;    private String xh;    private String pp;    private double jg;    private double size;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getXh() {        return xh;    }    public void setXh(String xh) {        this.xh = xh;    }    public String getPp() {        return pp;    }    public void setPp(String pp) {        this.pp = pp;    }    public double getJg() {        return jg;    }    public void setJg(double jg) {        this.jg = jg;    }    public double getSize() {        return size;    }    public void setSize(double size) {        this.size = size;    }}

4、dao层的接口

基于注解实现的

public interface PhoneMapper {    //新增    @Insert("insert into tb_phone(xh,pp,jg ,size) values(#{xh},#{pp},#{jg},#{size})")    @Options(useGeneratedKeys=true,keyProperty="id")    int save(Phone p);    //查询    @Select("select * from tb_phone")    @ResultType(Phone.class)    List<Phone> queryAll();}

5、service层对应的类

@Service@Transactionalpublic class PhoneService {    @Autowired    private PhoneMapper dao;    public boolean save(Phone p){        return dao.save(p)>0?true:false;    }    public List<Phone> queryAll()    {        return dao.queryAll();    }}

6、控制器

这里写代码@Controllerpublic class PhoneController {    @Autowired    private PhoneService service;    //请求页面    @RequestMapping("/{jn}")    public String test1(@PathVariable String jn){        return jn;    }    //新增    @RequestMapping("/add")    public String test2(Phone phone,Model model){        if(!service.save(phone)){            model.addAttribute("msg", "网络繁忙,稍后再来");        }        return "phoneadd";    }    //查询    @RequestMapping("/query")    public String test3(Model model){        model.addAttribute("list",service.queryAll());        return "phoneadd";    }}

7、页面

<%@ 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>SSM整合</title></head><body><!-- 添加 --><h1>添加手机信息</h1><h5>${msg }</h5><div><form action="add">品牌:<input name="pp"/><br/>型号:<input name="xh"/><br/>价格:<input name="jg"/><br/>尺寸:<input name="size"/><br/><input type="submit" value="添加手机"/></form></div><!-- 查询 --><h1>查询手机信息</h1><h2> <a href="query">刷新数据</a></h2><div><table border="1" width="80%"><tr><th>序号</th><th>品牌</th><th>型号</th><th>价格</th><th>尺寸</th></tr><c:if test="${list.size()==0 }"><tr><td colspan="5"><h1>暂无数据</h1></td></tr></c:if><c:forEach items="${list }" var="p" varStatus="ys"><tr ><td align="center">${p.id }</td><td align="center">${p.pp }</td><td align="center">${p.xh }</td><td align="center">${p.jg }</td><td align="center">${p.size }</td></tr></c:forEach></table></div></body></html>

8、运行结果页面
这里写图片描述