zoukankan      html  css  js  c++  java
  • spring-springmvc-mybatis整合

    ---恢复内容开始---

    前言:

      整合这三个框架的目的:
        因为mybatis不支持事务处理,为了满足这一需求因此需要整合spring-mybatis。

      整合中的注意事项:

        mybatis框架默认是不可以调用spring框架的数据源的,因此我们必须配置数据源用于创建会话工厂

        mybatis是通过映射接口创建对象的,但是spring不支持接口创建对象,mybati-spring中提供了解决方案

        整合的目的就是为了支持事务代理,因此必须指定事务代理的数据源

    配置流程:

      1、配置springmvc框架

      2、配置mybatis框架

      3、两个框架的整合

    具体步骤

      配置springmvc:

      注意事项:springmvc是实现前端和后台代码分离的框架,构建的是一个web项目。因此配置流程应该从请求开始。为了能够实现一个请求对应一个方法,必须在web.xml中配置一个核心控制器,拦截所有请求。拦截请求后如何实现请求和方法一一对应?通过映射路径实现。

        配置流程:

          创建一个请求传到web项目入口web.xml。

          在web.xml中配置核心控制器拦截所有请求

          创建业务控制器(controller层)

          配置请求与方法的映射路径

          返回前端页面

        实现代码:

          请求创建:

    <form action="${pageContext.request.contextPath }/add" method="get">
        姓名:<input type="text" name="name" placeholder="姓名"><br>
        学号:<input type="text" name="num" placeholder="学号"><br>
        <input type="submit" value="提交">
    </form>

          配置核心控制器:

     <servlet>
          <servlet-name>dispatcherServlet</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring-*.xml</param-value>
          </init-param>
      </servlet>
      <servlet-mapping>
          <servlet-name>dispatcherServlet</servlet-name>
          <!-- 这样会拦截静态资源,到时要放开静态资源 -->
          <url-pattern>/</url-pattern>
      </servlet-mapping>

          编程业务控制器(表示层代码)以及设置映射路径和返回页面

    @Controller
    public class StudentController {
        @RequestMapping(value="/add")
        public String add(String name,String num,HttpServletRequest request) {
            System.out.println(name);
            request.setAttribute("name", name);
            return "/show.jsp";
        }
    }

    mybatis配置

      配置流程:

        创建配置总文件

        获得数据库操作对象

        创建映射接口

        在配置总文件中指定映射接口

      具体实现步骤

        创建总配置文件:

          声明:配置总文件是用于配置全局设置和参数的一个文件,需要读取配置总文件的参数来创建数据库操作对象,

             因此配置总文件必须包含连接数据库的一些必要属性。

          实现代码:

    <!-- 配置连接信息 -->
        <environments default="sms">
            <environment id="sms">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="url" value="jdbc:mysql://localhost:3306/sms"/>
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="username" value="root"/>
                    <property name="password" value="1234"/>
                </dataSource>
            </environment>
        </environments>

          获得数据库操作对象

            实现流程说明:

              1、使用Resources类以流的方式读取配置文件得到一个流对象

              2、创建会话工厂构建类对象

              3、使用会话工厂构建类对象创建会话工厂

              4、使用会话工厂获得操作对象

            实现代码:

    public class Config {
        public SqlSession getsession() throws IOException {
            Reader reader = Resources.getResourceAsReader("mybatis.xml");
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            SqlSessionFactory sessionFactory = builder.build(reader);
            SqlSession session = sessionFactory.openSession();
            return session;
        }
    }

          创建映射接口:

    public interface StudentMapper {
        @Select("select * from t_student where id = #{id}")
        public Student select(int id);
    }

          在总配置文件中指定映射接口:

    <!-- 指定映射接口 -->
        <mappers>
            <mapper class="my.mapper.StudentMapper"/>
        </mappers>

    springmvc-mybatis整合

        注意事项:spring整合mybatis需要一个整合包(spring-mybatis),需要springJDBC、dbcp2、spring-tx四个包

             mybatis框架默认是不可以调用spring框架的数据源的,因此我们必须配置数据源用于创建会话工厂

             mybatis是通过映射接口创建对象的,但是spring不支持接口创建对象,mybati-spring中提供了解决方案

             整合的目的就是为了支持事务代理,因此必须指定事务代理的数据源

        配置流程:

            创建数据源(为了使数据源具有事务代理能力,需要重新指定数据源)

            创建支持spring数据源的会话工厂

            扫描映射接口的动态对象到spring容器中

            配置事务代理

        具体实现:

          说明:spring整合其他框架只需要在spring配置文件中增加<bean>即可,因此以上步骤均在在spring配置文件中配置

            创建数据源:

      <bean name="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
            <property name="url" value="jdbc:mysql://localhost:3306/sms"></property>
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
            <property name="username" value="root"></property>
            <property name="password" value="1234"></property>
        </bean>

            创建支持spring数据源的会话工厂:

      <!-- 通过整合包的类,获得会话工厂 -->
        <bean name="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 指定使用的数据源 -->
            <property name="dataSource" ref="dataSource"></property>
            <!-- 相当于mybatis总配置文件中的settings 标签-->
            <property name="configuration">
                <bean  class="org.apache.ibatis.session.Configuration">
                <!-- 支持驼峰命名法 -->
                    <property name="mapUnderscoreToCamelCase" value="true"></property>
                </bean>
            </property>
        </bean>

            扫描映射接口的动态对象到spring容器中:

        <!--获得映射接口的对象,将其注入到spring容器中
            注意:mybatis是通过接口创建对象的,但是spring不支持痛过接口创建对象,因此
                    mybatis提供了一个解决方案  -->
        <bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!-- 指定会话工厂,用于创建映射接口动态对象 -->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property>
            <!-- 指定映射接口包的位置 -->
            <property name="basePackage" value="my.mapper"></property>
            <!-- 指定使用指定注解才创建对象并注入到spring容器中 -->
            <property name="annotationClass" value="org.mybatis.spring.annotation.MapperScan"></property>
        </bean>

            配置事务代理:

    <!-- 配置事务代理 -->
        <bean name="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 指定数据源 -->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <tx:annotation-driven transaction-manager="tx"/>

          最后删除mybatis总配置文件和获取操作对象的类即完成了ssm框架的配置。

              

          

    ---恢复内容结束---

  • 相关阅读:
    JS 获取本月第一天零点时间戳并转化成yy-mm-dd
    JS 两个对象数组合并并去重
    element ui datePicker 设置当前日期之前的日期不可选
    整理一些vue elementui 问题 + 链接方法
    css 修改placeholder的颜色
    js循环内0.5s停止
    自定义border 为 dashed 时的虚线间距
    如何让浮动元素水平/垂直居中
    centos7.6设置sftp服务
    HikariCP Druid比较
  • 原文地址:https://www.cnblogs.com/cdeelen/p/10861353.html
Copyright © 2011-2022 走看看