SpringMVC+Spring+mybatis

1.    外部架包依赖引入

1.1  spring框架依赖包引入
spring-context

spring-beans

spring-jdbc

spring aspects

spring-webmvc

1.2  spring-mybatis依赖包引入
mybatis

mybatis-spring

1.3  数据库依赖包引入
mysql-connector-java

druid

1.4  redis依赖包引入
jedis

1.5  web相关依赖包引入
jstl

servlet-api

jsp-api

Jackson-databind

1.6  其他日志和公共包依赖引入
slf4j-log4j12

junit

commons-langs

commons-io

2.    各项目间依赖关系以及架包引入
ssm-parent实现了所有外部依赖包引入
(1)ssm-commons 实现公共的组件,工具类等
(2)ssm-manager 实际业务管理工程,聚合工程,
其包含工程依赖(1)
(3)ssm-manager-pojo
(4)ssm-manager-mapper 依赖(3)
(5)ssm-manager-service  依赖(3,4)
(6)ssm-manager-controller 依赖(3,5)

3.    Spring简单介绍

Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,简单来说,Spring是一个
分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

总结几点:
1)   spring是轻量级的,而且是开放源码的。
2)   spring有控制反转和依赖注入的特性,将类之间的主动关联转换为被动关联,实现的相互间的解耦,
通过配置文件,简化了开发;
3)   aop面向切面编程,将系统核心业务与服务分离,实现了代码的解耦,通过切面实现全局调用,
如日志,事务等;
4)   与其他框架能很好的集成,如mybatis,struts2,hibernate,redis等。

4.    mybatis简单介绍
MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的 
JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的 XML或注解,
将接口和Java的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

mybatis相对hibernate优势
1)   mybatis是轻量级的,学习成本较低,易上手;
2)   mybatis是半自动化的,相关的sql需要手动实现;

5.    Spring,mybatis,mysql等配置实现

5.1  ssm-manager-controller项目中的所有配置文件

db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ussm?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

applicationContext-mapper.xml

    <!-- 配置文件 -->
    <context:property-placeholder location="classpath:config/*.properties"/>
    <!-- 数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
       destroy-method="close">
       <property name="url" value="${jdbc.url}" />
       <property name="username" value="${jdbc.username}" />
       <property name="password" value="${jdbc.password}" />
       <property name="driverClassName" value="${jdbc.driver}" />
       <property name="maxActive" value="10" />
       <property name="minIdle" value="5" />
       <property name="logAbandoned" value="true" />
    </bean>
    <!-- 配置sqlsessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>
       <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 配置扫描包,加载mapper代理对象 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.ssm.manager.mapper"></property>
    </bean>

applicationContext-service.xml

    <!-- 自动扫描service包 -->
    <context:component-scan base-package="com.ssm.manager.service">
</context:component-scan>
 
    <import resource="applicationContext-mapper.xml"/>
    <import resource="applicationContext-trans.xml"/>

applicationContext-springmvc.xml
 <!--  通过Web.xml的DispatcherServlet加载 -->
 <!-- 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 
两个bean,是spring MVC为@Controllers分发请求所必须的 -->

 <!-- 启动spring事务注解, $该启用必须在springMVC中,而不能在applicationContext.xml中配置,
不然事务注解无效$
         也就是说只有这一行才能真正开启事务,单独地在类或方法上注解@Transaction只是作了事务
标记而以-->  
     <tx:annotation-driven  transaction-manager="transactionManager" />

 <!-- 启动spring事务注解, $该启用必须在springMVC中,而不能在applicationContext.xml中配置,
不然事务注解无效$ 也就是说只有这一行才能真正开启事务,单独地在类或方法上注解@Transaction
只是作了事务标记而以-->  
     <tx:annotation-driven  transaction-manager="transactionManager" />

    <bean    class="org.springframework.web.servlet.mvc.annotation.
DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <list>
                <!-- 多个拦截器,顺序执行 -->
                <!-- <ref bean="SpringMVCInterceptor" /> -->
                <!-- <ref bean="OpenSessionInViewInterceptor" /> -->
            </list>
        </property>
    </bean>

    <!-- 5.对模型视图名称的解析,即给模型视图名称添加前后缀 -->
    <bean class="org.springframework.web.servlet.view
.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/" /> 
<!-- 让ModelAndView("jsp/teacher/listTeachers.jsp") 从/WEB-INF/目录下开始 -->
        <property name="suffix" value="" />
        <!-- <property name="suffix" value=".jsp" /> -->
        <!-- Spring内部资源解析类 -->
        <property name="viewClass"    
      value="org.springframework.web.servlet.view.InternalResourceView" />
    </bean>

applicationContext-trans.xml

    <!-- 事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <!-- 数据源 -->
       <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
       <tx:attributes>
           <!-- 传播行为 -->
           <tx:method name="save*" propagation="REQUIRED" />
           <tx:method name="insert*" propagation="REQUIRED" />
           <tx:method name="add*" propagation="REQUIRED" />
           <tx:method name="create*" propagation="REQUIRED" />
           <tx:method name="delete*" propagation="REQUIRED" />
           <tx:method name="update*" propagation="REQUIRED" />
           <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
           <tx:method name="select*" propagation="SUPPORTS" read-only="true" />
           <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
       </tx:attributes>
    </tx:advice>
    <!-- 切面 -->
    <aop:config>
       <aop:advisor advice-ref="txAdvice"
           pointcut="execution(* com.ssm.manager.service.*.*(..))" />
    </aop:config>

web.xml

     <!-- spring配置文件整合配置 -->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext-service.xml</param-value>
      </context-param>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
      </listener>
      <!-- 字符编码过滤器 -->
      <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
          <param-name>forceEncoding</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      <!-- springmvc配置 -->
      <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring/applicationContext-springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.action</url-pattern>
        <url-pattern>*.js</url-pattern>
        <url-pattern>*.css</url-pattern>
        <url-pattern>/css/**"</url-pattern>
        <url-pattern>/images/**</url-pattern>
        <url-pattern>/js/**</url-pattern>
      </servlet-mapping>

UserController.java

pom.xml

<packaging>war</packaging>
        <dependency>
            <groupId>com.ssm.manager</groupId>
            <artifactId>ssm-manager-service</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
        </dependency>

5.2  ssm-manager-mapper项目中所有配置文件

pom.xml

        <dependency>
            <groupId>com.ssm.manager</groupId>
            <artifactId>ssm-manager-pojo</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
        <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
    <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

UserMapper.xml

<mapper namespace="com.ssm.manager.mapper.UserMapper">   
    <resultMap id="UserMapper" type="com.ssm.manager.pojo.User">   
        <id property="id" column="id" />   
        <result property="userName" column="userName" />   
        <result property="password" column="password" />   
    </resultMap>   
       
    <select id="getUsers" resultMap="UserMapper">   
        select id,userName,password from t_user       
    </select> 
    <insert id="xxxUsers" parameterType="int">
        INSERT INTO t_user (id,userName,password) VALUES (3,'lisi','123456');
    </insert>
</mapper>

5.4  ssm-manager-service所有文件的配置信息

pom.xml
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>

5.6  ssm-parent所有文件的配置信息

pom.xml
 <packaging>pom</packaging>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
        <junit.version>4.12</junit.version>
        <spring.version>4.1.3.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <mybatis.spring.version>1.2.2</mybatis.spring.version>
        <mysql.version>5.1.32</mysql.version>
        <slf4j.version>1.6.4</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
        <jackson.version>2.4.2</jackson.version>
        <druid.version>1.0.9</druid.version>
        <jstl.version>1.2</jstl.version>
        <servlet-api.version>2.5</servlet-api.version>
        <jsp-api.version>2.0</jsp-api.version>
        <commons-lang3.version>3.3.2</commons-lang3.version>
        <commons-io.version>1.3.2</commons-io.version>
        <jedis.version>2.7.2</jedis.version>

            <!-- Jackson Json处理工具包 -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <!-- 单元测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <!-- 日志处理 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis.spring.version}</version>
            </dependency>
            <!-- MySql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!-- 连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- JSP相关 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>${jsp-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- Redis客户端 -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${jedis.version}</version>
            </dependency>

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/87774189