主工程模块yycgproject三层构建

基础架构:Springmvc+mybaits

Base:业务基础模块

主要就是系统管理功能
配置文件
1. Log4j.properties—》日志配置文件

  1. Db.properties—-》连接数据库 配置连接数据库的参数

  2. Mybatis/SqlMapConfig.xml—》 mybatis的核心配置文件 Mybatis配置项

  3. Spring/applicationContext.xml -spring的核心配置文件 配置公用的内容:数据源、事务管理
    (加载数据库配置文件 、 数据库连接池、 事务管理器 )

  4. Spring/applicationContext- base-dao.xml 配置dao 配置SqlSessionFactory,dao(mapper)
    ( 加载数据源 配置SqlMapConfig.xml 配置 mapper自动扫描器和SqlSessionFactory(bean名称就是mapper类型(首字母小写))

  5. Spring/applicationContext-base-service.xml - 配置service 配置业务接口

  6. Spring/Springmvc.xml—》配置springmvc
    组件扫描(扫描所有@controller标记类 即扫描action包)
    处理器映射器
    处理器适配器
    视图解析器
    拦截器
    ….

1.1.2 整合Dao:

达到目标:将spring和mybatis整合,将spring管理dao接口。
让spring对SqlSessionFactory管理,再由SqlSessionFactory自动生成sqlSession,SqlSession就是dao接口中要用的。

配置:applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd ">

<!-- 加载配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>

<!-- 数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
       <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!-- 开发阶段建议最大连接数据尽量少,够用即可 -->
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxIdle" value="${jdbc.maxIdle}"/>
</bean>

<!-- 事务管理器 -->
<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" rollback-for="java.lang.Exception"/>
    <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
    <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
  </tx:attributes>
</tx:advice>

<!-- 切面 -->
<aop:config proxy-target-class="true">
  <aop:advisor advice-ref="txAdvice" pointcut="execution(* yycg.*.service.impl.*.*(..))"/>
</aop:config>
</beans>

配置applicationContext-base-dao.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd ">
<!-- 配置SqlSessionFactory 从spring和mybatis的整合包中获取 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 加载数据源 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 配置SqlMapConfig.xml -->
    <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"/>
</bean>

<!-- 使用MapperFactoryBean 生成mapper的代理对象 在mybatis和spring的整合包中 -->

<!-- <bean id="sysuserCustomMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 配置mapper接口 <property name="mapperInterface" value="yycg.base.dao.mapper.SysuserCustomMapper"/> 配置sqlSessionFactory <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> -->

<!--配置 mapper自动扫描器 bean名称就是mapper类型(首字母小写) -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <!-- 配置扫描包路径 ,如果扫描多个包路径,中间使用半角逗号分隔-->
   <property name="basePackage" value="yycg.base.dao.mapper"/>
    <!-- 配置SqlSessionFactory -->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
</beans>

1.1.2..1 Spring和mybatis整合,dao开发方法1:

程序员创建dao接口及dao接口的实现类,

Dao接口实现类继承SqlSessionDaoSupport
在spring容器中配置dao接口,并将SqlSessionFactory注入到dao接口实现中,
在dao接口方法中调用this.getSqlSession()获取SqlSession。

1.1.2..2 Mapper动态代理方法:

程序员只需要编写mapper接口(相当于dao接口),不需要编写 mapper接口的实现类,mybatis提供根据mapper接口和mapper.xml(映射文件)生成mapper接口动态代理对象(mapper接口的实现)。

具备什么规则生成mapper代理对象:
Mapper.xml中的namespace等于mapper接口的地址。
Mapper.xml中定义的sql的id(mapped statement的id)等于mapper.java中方法名
Mapper.xml中定义的statement的parametertype等于mapper.java中方法的形参类型。
Mapper.xml中定义的statement的resultType等于mapper.java中方法的返回值类型。

开发两个文件:mapper.java和mapper.xml

 方式1:使用MapperFactoryBean
在spring容器中进行配置mapper:
使用MapperFactoryBean,根据mapper接口生成代理对象。
注意:mapper.xml和mapper.java同名且在一个目录 ,不需要在SqlMapConfig.xml中加载mapper文件。
测试方法:
获得spring容器,从容器中得sysuserCustomMapper

使用MapperFactoryBean需要在spring容器对每个mapper进行配置,麻烦。

 方式2:使用mapper自动扫描器(推荐)

使用mybaits和spring整合包中提供的mapper扫描器,自动扫描mapper,生成动态代理对象,在spring容器注册。

配置mapper自动扫描器

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <!-- 配置扫描包路径 ,如果扫描多个包路径,中间使用半角逗号分隔-->
   <property name="basePackage" value="yycg.base.dao.mapper"/>
    <!-- 配置SqlSessionFactory -->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

开发两个文件:mapper.java和mapper.xml,注意:mapper.xml和mapper.java同名且在一个目录
测试:
获得spring容器,从容器中得SysuserCustomMapper
本系统采用扫描器方法创建mapper对象。

1.1.3 整合service

整合目标:
让spring统一管理service接口,在service中调用mapper。
在service层实现事务控制,使用声明式事务配置方法

编写service 接口和实现类:

applicationContext-service.xml配置:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd ">

<!-- 用户管理 -->
<bean id="userService" class="yycg.base.service.impl.UserServiceImpl"/>

</beans>

1.1.4 整合action

整合目标:
在action中调用service接口,从service中获取数据传到页面。
实现系统首页(使用jquery Easyui)。

配置:Springmvc.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd ">

    <!-- 组件扫描 扫描所有标记@Controller类,由于使用自动扫描所以action类不用在spring配置文件中配置 -->
    <context:component-scan base-package="yycg.**.action" />

    <!-- 处理器映射器和适配器,可以使用mvc注解驱动 -->
    <mvc:annotation-driven/>


    <!-- 视图解析器 -->
    <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 将jstl的jar包加入工程,默认支持jstl -->
        <!-- 前缀和后缀可以去掉的,为了方便开发才加的 -->
        <property name="prefix" value="/WEB-INF/jsp" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

你可能感兴趣的:(spring,mvc,mybatis)