ssm的简单整合

一、环境:

Jdk 1.8+myeclipse2015+mysql

二、所需jar包:

1、 Mybatis与spring整合jar包:
2、 Mybatis的主要包以及依赖包
3、 Spring的jar包
4、 第三方数据库连接包
使用maven
pom.xml

<properties>
        <webVersion>3.1</webVersion>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-version>4.3.5.RELEASE</spring-version>
    </properties>
    <dependencies>
        <!-- spring 依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</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-expression</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</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-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>3.2.4</version>
        </dependency>

        <dependency>
            <groupId>aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.5.4</version>
        </dependency>
        <!-- mybatis的依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!-- 数据库的驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- 日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>20030825.184428</version>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>20030825.183949</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>20040616</version>
        </dependency>

        <!--返回json所需jar包-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.8</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

注意:如果在IDEA下还需要在pol.xml的build中添加。否则,可能会报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 的错误。

<resources>
     <resource>
         <directory>src/main/java</directory>
         <includes>
             <include>**/*.xml</include>
         </includes>
     </resource>
</resources>

三、整合

1、配置文件:

1)、mybatis的全局备注文件:SqlMapConfig.xml

<configuration>
    <!-- 定义别名 -->
    <typeAliases>
        <!-- 批量定义别名,首字母将会小写 -->
        <package name="com.ssm.domain"/>
    </typeAliases>
    <!-- 配置mapper映射文件 -->
    <mappers>
        <!-- 批量配置mapper扫描
        将mapper.xml和mapper.java放在一个文件夹下,文件名相同-->
        <package name="com.ssm.dao.mapper"/>
        <!-- 直接加载Mapper文件 -->
        <!-- <mapper resource="classpath:mybatis/sqlmap/userMapper.xml"/> -->
    </mappers>
</configuration>

2)、mapper的简单配置:

<!-- 通过动态代理的方式,namespace的名字必须是被代理接口的完整类名 -->
<mapper namespace="com.ssm.dao.mapper.userMapper">

    <select id="findUserById" parameterType="int" resultType="user">
        select * from User where id=#{id};
    </select>
</mapper>

3)、spring配置文件(配置公用内内容:数据源、事务):applicationContext.xml

<!-- 加载数据库配置文件 -->
    <context:property-placeholder location="classpath:db.properties" />
    <!--配置数据 ,使用第三方的的数据库连接池DBCP-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 事务的控制  使用jdbc的事务控制-->
    <bean id="transactionManage" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 配置数据源 -->
        <property name="dataSource" value="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="delete*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    <!-- 配置AOP -->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.ssm.dao.impl.*.*(..))"/>
    </aop:config>

4)、spring和mybatis整和配置(SQLSessionfactory、mapper配置):applicationContext-dao.xml

<!-- spring和mybatis整和配置(SQLSessionfactory、mapper配置
    使用spring来管理sqlsession,
        在spring-mybatis整合包中找到org.mybatis.spring.SqlSessionFactoryBean.class     
     -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--加载数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!-- 加载配置sqlSessionConfig.xml文件 -->
        <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>    
    </bean>
    <!-- 
    使用普通dao模式开发
        配置userDao -->
    <bean name="userDao" class="com.wqh.ssm.dao.impl.userDaoImpl">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
    </bean> 
    <!-- 使用mapper批量扫描器自动扫描mapper
        XXXmapper.xml和XXXmapper.java必须在同一个文件夹中、且名字相同
        扫描出来的mapper让spring容器自动注册,bean的Id就是mapper的类名首字母小写
     -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注册会话工厂 -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
        <!-- 扫描包的路径,多个包;名用半角逗号隔开 -->
        <property name="basePackage" value="com.ssm.dao.mapper"/>

    </bean>

5)、配置业务接口: applicationContext-service.xml

<!-- 自动扫描service 在service实现类名上加@Service注解 spring将会自动扫描-->
        <context:component-scan base-package="com.ssm.service.impl"/>

6)、springmvc全局配置文件(时整合表现层所需):springMVC.xml

    <!-- 组件扫描 -->
        <context:component-scan base-package="com.ssm.controller"/>
        <!-- 这里使用springMVC注解开发 -->
        <mvc:annotation-driven/>
        <!--配置视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"/>
            <property name="suffix" value=".jsp"/>
        </bean>

7)、数据库连接参数简单配置:db.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

8)、日志文件参数(可以不配置):log4j.properties

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

2、整合持久层

    这里使用mapper动态代理的方式,将xxxMapper.java和xxxMapper.xml放在同一包下,且名字要相同

3、整合service层

1)、在接口实现类的类名上添加@Service注解,因为前面配置文 件以及配置了自动扫描,所以添加了该注解后,spring会自动扫描所配置的包下的类
2)、使用@Autowired自动注入mpper

4、整合表现层

1)、spring-mvc.xml的简单配置前面已给出
2)、在web.xml中配置前端控制器
spring配置文件的加载必须放在前面

<!-- 使用通配符*加载spring的配置问件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext.xml,classpath:spring/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:spring/springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

3)、在控制类的类名上加@Controller注解,在方法上加@RequestMapping注解,及为访问时的路径名,如果类名上使用@RequestMapping(“/manage”)注解,在访问的时候则要加上该父路径
访问路径:项目名/父路径/子路径.action

ps:第一篇博客,真心不知道怎么写,还有很多需要改进的地方,这也算是一个记录自己学习的地方,加油!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值