zoukankan      html  css  js  c++  java
  • Spring + SpringMVC + MyBatis 整合

    1、依赖

      基于空的maven项目;

     <dependencies>
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <!--测试依赖包-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
            <!--spring依赖-->
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.4.RELEASE</version>
            </dependency>
            <!--spirng操作数据库依赖-->
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.2.4.RELEASE</version>
            </dependency>
            <!--mysql数据库连接依赖-->
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.48</version>
            </dependency>
            <!-- 数据库连接池 -->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.2</version>
            </dependency>
    
            <!--mybatis依赖-->
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.4</version>
            </dependency>
            <!--mybatis整合spring依赖-->
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.3</version>
            </dependency>
            <!--spring mvc依赖-->
            <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.1</version>
                <scope>provided</scope>
            </dependency>
            <!--jsp依赖-->
            <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.3</version>
                <scope>provided</scope>
            </dependency>
            <!--jstl依赖-->
            <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
        </dependencies>
    
    
        <build>
            <!--配置打包时不过滤非java文件开始  -->
            <!--说明,在进行模块化开发打jar包时,maven会将非java文件过滤掉,
            xml,properties配置文件等,但是这些文件又是必需的,
            使用此配置可以在打包时将不会过滤这些必需的配置文件。
            -->
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
            </resources>
            <!--配置打包时不过滤非java文件结束 -->
        </build>

    2、整合MyBatis

      2.1 在resource下新建一个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>
    
       
    </configuration>

      2.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
    
     
    </beans>

      2.3 新建一个数据库连接信息配置文件:datasource.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&CharacterEncoding=utf-8&useUnicode=true&serverTimezone=UTC
    jdbc.user=root
    jdbc.password=123456

      2.4 这时可以补齐java目录下的包;dao(mapper)、service、controller、pojo(bean);

      2.5 这时新建一个spring-mapper.xml,用于配置数据库连接串、数据库连接池、sqlSessionFactory和spring自动扫描mapper包自动注入 xxxMapper.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--0、导入数据库信息配置-->
        <!--<context:properties location="datasource.properties" />-->
        <context:property-placeholder location="classpath:datasource.properties"></context:property-placeholder>
    
        <!--1、配置数据库信息-->
        <!--2、配置连接源,这里使用的c3p0的数据源,没用spring自带的-->
        <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
            <property name="driverClass" value="${jdbc.driver}"></property>
            <property name="jdbcUrl" value="${jdbc.url}"></property>
            <property name="user" value="${jdbc.user}"></property>
            <property name="password" value="${jdbc.password}"></property>
    
            <!-- c3p0连接池的私有属性 -->
            <property name="maxPoolSize" value="30"/>
            <property name="minPoolSize" value="10"/>
            <!-- 关闭连接后不自动commit -->
            <property name="autoCommitOnClose" value="false"/>
            <!-- 获取连接超时时间 -->
            <property name="checkoutTimeout" value="10000"/>
            <!-- 当获取连接失败重试次数 -->
            <property name="acquireRetryAttempts" value="2"/>
        </bean>
    
    
        <!--3、提供SqlSessionFactory
                关联数据源;
                关联mybatis配置文件
        -->
        <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
            <property name="dataSource" ref="dataSource"></property>
            <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        </bean>
    
        <!--4、自动扫描mapper文件,动态的实现了Dao接口注入到spirng容器中-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!--注入sqlSessionFactory-->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
            <!--扫描mapper包,实现动态注入-->
            <property name="basePackage" value="com.doubleh.mapper"></property>
        </bean>
    
    </beans>

    3、整合Spring

      新建一个spring-service.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--1、自动扫描service 的bean-->
        <context:component-scan base-package="com.doubleh.service"></context:component-scan>
    
        <!--2.将我们的所有业务类注入spring容器中,可以通过配置或者注解注入-->
    
        <!--3、声明式事务支持-->
        <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="dataSourceTransactionManager">
            <!--注入dataSource-->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    
        <!--4、AOP 有需要的话在这边配置-->
    
    </beans>

    4、整合SpringMVC

      4.1 项目添加web应用;

      4.2 web.xml 添加 DispatcherServlet 和 乱码过滤;

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    
        <!--配饰spring mvc 的servlet调度器-->
        <servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--配置spring容器-->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:applicationContext.xml</param-value>
            </init-param>
            <!--设置启动级别-->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <!--乱码过滤-->
        <filter>
            <filter-name>characterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>characterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
    </web-app>

      4.3 新建一个spring-mvc.xm配置文件;

        处理controller层业务,配置mvc的注解驱动,忽略静态资源、扫描controller层,添加beanName和url的处理映射器配置、controller处理适配器配置和视图解析配置;

    <?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: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
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!--1、配置spring mvc注解驱动-->
        <mvc:annotation-driven />
    
        <!--2、配置mvc忽略静态资源的调度-->
        <mvc:default-servlet-handler />
    
        <!--3、扫描controller包,自动注入-->
        <context:component-scan base-package="com.doubleh.controller"></context:component-scan>
    
        <!--4、配置bean名和url处理映射器-->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
    
        <!--5、配置controller处理适配器-->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
    
        <!--6、配置视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    </beans>

    5、测试

      用于测试数据库连接是否正常;

     @Test
        public void test1(){
           ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
           BookService bean = (BookService) context.getBean("bookServiceImpl");
            List<Books> books = bean.queryAll();
            for (Books book : books) {
                System.out.println(book);
            }
        }

    6、问题

      6.1 报404错误

        查看控制台输出,看一下是不是缺少了什么jar包。

        如果jar包存在,显示无法输出,就在IDEA的项目发布中,添加lib依赖!

        如果lib依赖没问题,就查看下spring-mvc相关配置是否正确。比如:视图解析器中前后缀是否写错了。

  • 相关阅读:
    leetcode 86. Partition List
    leetcode 303. Range Sum Query
    leetcode 1310. XOR Queries of a Subarray
    leetcode 1309. Decrypt String from Alphabet to Integer Mapping
    leetcode 215. Kth Largest Element in an Array
    将numpy.ndarray写入excel
    leetcode 1021 Remove Outermost Parentheses
    leetcode 1306. Jump Game III
    leetcode 1305. All Elements in Two Binary Search Trees
    ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution
  • 原文地址:https://www.cnblogs.com/xp2h/p/12390293.html
Copyright © 2011-2022 走看看