MyBatis+Spring+SpringMVC(SSM)整合框架

框架篇:MyBatis+Spring+SpringMVC整合框架

前言:

准备工作:

     1/安装并配置java运行环境

     2/数据库的安装配置(Mysql)

     3/安装并配置服务器(Tomcat)

     4/Maven

     5/ IntelliJIDEA的安装配置(本人使用的主要软件是IntelliJIDEA,没用eclipse什么的)

     6/ 使用IntelliJIDEA创建一个web app项目。

导包

不同于以往的导包,由于我们创建的是maven的webapp项目,所以现在只需配置下pomxml这个配置文件,系统会自动到maven的*仓库去下载相应的包.

本人的pom.xml配置文件如下

<dependencies>

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
  </dependency>

  <!-- 引入Servlet的依赖 -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
  </dependency>


   <!--整合MyBatis-->
  <!--MyBatis-->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
  </dependency>
  <!--MySQL-->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.43</version>
  </dependency>

   <!--整合spring 同时也包含了springmvc-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.3.3.RELEASE</version>
  </dependency>

  <!--C3p0-->
  <dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.1</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.3.10.RELEASE</version>
  </dependency>

    <!--spring和mybatis整合-->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
  </dependency>



  <!--jackson依赖-->
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.1</version>
  </dependency>


  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.1</version>
  </dependency>

  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.1</version>
  </dependency>


</dependencies>
<build>
  <finalName>SSM</finalName>
 <resources><!--加载java类中的xml配置文件-->
   <resource>
     <directory>src/main/java</directory>
     <includes>
       <include>**/*.xml</include>
     </includes>
   </resource>
 </resources>
</build>
配置后运行下maven,就会自动向*仓库下载相应的包啦!


MyBatis搭建

先看一下项目的结构流程:

MyBatis+Spring+SpringMVC(SSM)整合框架

我们先配置mybatis框架的配置: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>


    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url"   value="jdbc:mysql://localhost:3306/test"/>
                 <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/ssm/entity/User.xml"/>
   </mappers>

</configuration>

mybatis配置文件就配置好了,然后我们来建实体类

User

package com.ssm.entity;

public class User {

    private int uid;
    private String uname;
    private  String upass;

    public User() {
    }

    public User(String uname, String upass) {
        this.uname = uname;
        this.upass = upass;
    }

    public User(int uid, String uname, String upass) {
        this.uid = uid;
        this.uname = uname;
        this.upass = upass;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpass() {
        return upass;
    }

    public void setUpass(String upass) {
        this.upass = upass;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", upass='" + upass + '\'' +
                '}';
    }
}
这时我们就需要写映射文件来对数据进行sql语句操作了,但是我们需要先把Dao的接口写了。

IUserDaos

package com.ssm.dao;

import com.ssm.entity.User;

import java.util.List;

public interface IUserDaos {

    //查询单个
     public User getUserById(int uid);

    //查询所有
    public List<User> getAllUsers();

    //添加
    public boolean addUser(User user);

    //删除
    public int deleteUser(int uid);

    //修改
    public void updateUser(User user);


}
然后就是映射文件了:User.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.ssm.dao.IUserDaos">
    <!--查询单个对象 id名要与Dao接口的方法名相同 parameterType为返回的参数类型,resultType为返回的结果类型-->
    <select id="getUserById" parameterType="int" resultType="com.ssm.entity.User">
        select * from user where uid=#{uid};
    </select>

    <!--查询集合-->
    <select id="getAllUsers" resultType="com.ssm.entity.User">
        select * from user;
    </select>

    <!--添加数据-->
    <select id="addUser" parameterType="com.ssm.entity.User"  resultType="com.ssm.entity.User">
        insert into user(uname,upass) values(#{uname},#{upass});
    </select>

    <!--删除数据-->
    <select id="deleteUser" parameterType="int">
        delete from user where uid=#{uid};
    </select>

    <!--修改数据-->
    <select id="updateUser" parameterType="com.ssm.entity.User" resultType="com.ssm.entity.User">
        update user set uname=#{uname},upass=#{upass} where uid=#{uid};
    </select>
</mapper>
ok,前提工作都弄好了,现在我们在man下面创建一个测试类test,把它标记为

MyBatis+Spring+SpringMVC(SSM)整合框架

然后我们写一个MyBatis的测试类,

package TestMyBatis;

import com.ssm.dao.IUserDaos;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

public class MybTest {

    @Test
    public void tests() throws Exception{

      //测试mybatis
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
        SqlSession sqlSession=sqlSessionFactory.openSession();

        IUserDaos iUserDaos=sqlSession.getMapper(IUserDaos.class);


        iUserDaos.deleteUser(3);
        System.out.println(iUserDaos.getAllUsers().size());
        sqlSession.commit();
        sqlSession.close();

    }
}
如果能够执行命令的话,说明MyBatis框架已经搭建成功了!

MyBatis+Spring搭建

需要用到c3p0,所以我们先建一个db.properties文件,配置如下

#连接名
uname=root
#密码
upass=123
#路径
url=jdbc:mysql://localhost:3306/test
#连接驱动
driver_Class=com.mysql.jdbc.Driver
#初始化大小
initPoolSize = 3   
#池子最大值
maxPoolSize = 20   
接下来我们就建一个spring的xml配置文件,applicationContext.xml(其实和ssh中的一样,不过其中的事物配置我们可以不需要配置了,其它的配置文件也不需要了,只需要这一个配置文件就可以了,是不是觉得少了很多代码呢?),之前的mybatis-config.xml配置文件中连接mysql的代码就可以不需要了,映射文件也不需要了

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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">

    <!--加载db.properties-->
    <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
    <!--配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${uname}"></property>
        <property name="password" value="${upass}"></property>
        <property name="jdbcUrl" value="${url}"></property>
        <property name="driverClass" value="${driver_Class}"></property>
        <property name="initialPoolSize" value="${initPoolSize}"></property>
        <property name="maxPoolSize" value="${maxPoolSize}"></property>
    </bean>
    <!--配置sqlsessionfacory -->
     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <!--映射数据源-->
          <property name="dataSource" ref="dataSource"></property>
         <!--加载mybatis文件-->
          <property name="configLocation" value="classpath:mybatis-config.xml"></property>
         <!--加载映射文件-->
           <property name="mapperLocations" value="classpath:com/ssm/entity/*.xml"></property>
     </bean>

      <!--配置dao的接口 直接配置整个dao包,就只需要配置一次就好了,不过之后再调用时别名要是类的小写名-->
      <bean id="scannerConfigurer"  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
          <property name="basePackage" value="com.ssm.dao"></property>
      </bean>

    <!--配置Dao,personDao  详细配置到包下面的类名-->
    <!--<bean id="iUserDaos" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
        <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>-->
        <!--<property name="mapperInterface" value="com.ssm.dao.IUserDaos"></property>-->
    <!--</bean>-->

</beans>
ok,配置文件工作已经做好了,下面我们来对它进行测试,在测试文件下中创建一个spring的测试类:

package TestMyBatis;

import com.ssm.dao.IUserDaos;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {

    @Test
    public void testspring(){

        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        IUserDaos iUserDaos= (IUserDaos) applicationContext.getBean("iUserDaos");
        System.out.println(iUserDaos.getAllUsers().size());
    }


}
如果出现了数据呐那就说明mybatis+spring的结合是没有问题的哦!
最后:MyBatis+Spring+SpringMVC搭建



要先在java下面创建一个controller类
然后在创建Springmvc的配置文件(直接创建file,头部自己写):springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

  <!--配置扫描器-->
    <context:component-scan base-package="com.ssm.controller"></context:component-scan>

    <!--视图解析器-->
    <bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
          <property name="prefix" value="/"></property>
        <!--后缀-->
           <property name="suffix" value=".jsp"></property>
    </bean>


    <!--配置注解解析器 别忘记了,有可能在转jackson时会报406的错误 得不到值-->
    <mvc:annotation-driven></mvc:annotation-driven>

</beans>
接下来我们该配置web.xml了:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>


  <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>*.action</url-pattern>
  </servlet-mapping>


  <welcome-file-list> //修改最开始的响应界面
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>

</web-app>
然后我们在controller包建类,实现springmvc的业务方法

package com.ssm.controller;

import com.ssm.dao.IUserDaos;
import com.ssm.entity.User;
import org.apache.ibatis.annotations.Param;
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.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.PrintWriter;
import java.util.List;

@Controller
public class UserController {

    @Autowired
    private IUserDaos iUserDaos;

    @RequestMapping("delete")
    public void delete(HttpServletResponse response,int uid) throws Exception{
        PrintWriter out=response.getWriter();
        int n=iUserDaos.deleteUser(uid);
        System.out.println(iUserDaos.getAllUsers().size());
            out.write("1");
            out.close();
    }

    @ResponseBody  //加上会自动转jackson格式
    @RequestMapping("getAll")
    public List<User> getAll() throws Exception{

      List<User> list=iUserDaos.getAllUsers();
        System.out.println("进入:");
      //request.getSession().setAttribute("list",list);
      //System.out.println("session:"+request.getSession().getAttribute("list"));
      return list;
//     "redirect:/user.jsp";
    }

}
好了!现在最后一步了,在页面中把值绑定出来

先在webapp下面建一个jsp页面:

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/1/14
  Time: 0:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户管理</title>

     <script src="jquery/jquery.min.js"></script>


</head>
<body>

<div class="table-responsive">

  
    <table class="table" >
        <thead>
        <tr>
            <th data-field="state"   data-checkbox="true" ></th>
            <th>用户编号</th>
            <th>用户名</th>
            <th>密码</th>
            <th>操作</th>
        </tr>

        </thead>

        <tbody id="body">

        </tbody>

    </table>
</div>





<script type="text/javascript">
    
//加载数据
    $(function(){

        getAll();

    });

    //绑定数据
    function getAll(){
        $.ajax({
            type:"post",
            url:"/getAll.action",
            dataType:"json", //请求的返回类型 
            success:function (data) {
                //var result=eval(data.rows);
                var tr="";
                for(var i=0;i<data.length;i++){
                    tr+= "<tr>"
                        +"<td><input class='checkboxes' type=\"checkbox\" name=\"checkbox\"  value="+data[i].uid+"></td>"
                        +"<td>" + data[i].uid+ "</td>"
                        +"<td>" + data[i].uname + "</td>"
                        +"<td>" + data[i].upass + "</td>"
                        +"<td onclick='deletets(this,"+data[i].uid+")'> <button type='button'  class='btn btn-xs btn-link'>删除</button></td>"
                        + "</tr>";
                }
                $('#body').html(tr);
            }
        })
    }


</script>
</body>
</html>
得到结果如下则说明全部的整合就完成了,继续写你自己的操作吧!

MyBatis+Spring+SpringMVC(SSM)整合框架