:fa-hand-o-down:简单整理了一下利用Spring,Spring MVC,My Batis搭建系统框架的流程

根据顺序进行反向搭建:database–>Entity.java–>mapper.xml–>Mapper.java–>Dao.java–>DaoImpl.java–>Service.java–>ServiceImpl.java–>Controller.java–>xxx.jsp

一、数据库设计,数据表
  1、建库
  2、建表
  3、初始化数据
二、创建实体类
  设置私有化参数,并给出公有的get和set方法
三、Mapper实现增删查改的操作
  1、创建Mapper的接口,定义操作的方法
  2、创建mapper.xml实现Mapper接口的方法(格式如下,类名为Mapper接口)

  <mapper namespace="包名.Mapper类名"> 
    <resultMap type="包名.实体类名" id="结果集名称"> 
        <id property="id" column="id" /> 
        <result property="字段" column="字段" /> 
    </resultMap> 
    <!-- 此处select标签的id值对应Mapper类中方法名 --> 
    <select id="方法名" parameterType="string" resultMap="结果集名称"> 
    <!-- 此处写sql语句,#{Mapper类传入的参数} -->
        select * from tableName where column= #{column_value} 
    </select>
</mapper>

四、数据库操作对象Dao
1、创建dao接口(与Mapper接口极为相似)
2、dao接口实现方法

@Repository(&quot;xxxDao&quot;)  
public class xxxDaoImpl implements xxxDao {  
    //注解引用Mapper类资源  
    @Resource(name = &quot;xxxMapper&quot;)  
    private xxxMapper xxxMapper;  
     /* 对应的操作方法*/  
     public Class xxx(String value) {  
         //调用Mapper类从数据库中得到User对象  
         return xxxMapper.xxx(value);  
     }  
 } 

五、业务层service
1、创建业务层接口
2、业务层实现类,调用dao的方法进行操作,用注解@Resource进行不需要自己实例化
六、控制层Controller
1、@Controller对应表现层的Bean(Action)
注意:如果@Controller不指定其value【@Controller】则默认的bean名为这个类的的类名小写,若指定value【@Controller(value='XxxAction')】或【@Controller(“xxxAction”)】,则使用value值作为bean的名称

2、@Scope("prototype)标识将Action的范围声明为原型
可以利用容器的scope=“pototype"来保证每个请求都有一个独立的Action处理,避免struts中Action线程安全问题。spring默认是单例模式(scope="singleton"),这样只会创建一个Action对象,每次访问都是同一个,数据不安全。
3、RequestMapping("/xxx")
用来处理请求地址映射的注解,用于类或方法上,在类上标识所有请求的方法都是以改地址作为父路径的

              @Controller  
              @Scope(value="prototype")  
              @RequestMapping("/xxx")  
              public class XxxController {  
                  @Resource  
                  private XxxService xxxService;  

                  @RequestMapping(value="/login",method=RequestMethod.POST)  
                  public String xxxFunc(XxxClass xxx,Model model) throws Exception {  
                      xxx=xxxService.xxxFunc(xxx.getId());  
                      if(xxx!=null){  
                          model.addAttribute(xxx);  
                          return "welcome";// 路径 WEB-INF/pages/welcome.jsp              
                       }  
                      return "fail";  
                  }  
              }  

六、所有配置文件的配置
1、applicationContext.xml(Sping公共配置文件)的配置
a.数据库配置文件引入

    <bean id="property" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
            <list ><value>classpath:database.properties</value></list>  
        </property>  
    </bean>  

b.数据库连接池配置

        <bean id="dataSource" class="org.springframework.aop.target.CommonsPoolTargetSource" destroy-method="close">  
            <!-- 指定数据库驱动 -->  
            <property name="driverClass"><value>${mysql.driver_class}</value></property>  
            <!-- 链接地址 -->  
            <property name="jdbcUrl"><value>${mysql.connection.url}</value></property>  
            <!-- 链接用户名 -->  
            <property name="user"><value>${mysql.connectiion.username}</value></property>  
            <!-- 链接密码 -->  
            <property name="password"><value>${mysql.connection.password}</value></property>  
            <!-- 最大连接数 -->  
            <property name="maxPoolSize"><value>30</value></property>  
            <!-- 最小连接数 -->  
            <property name="minPoolSize"><value>2</value></property>  
            <!-- 初始化链接数 -->  
            <property name="initialPoolSize"><value>2</value></property>  
            <!-- 连接池链接最大空闲时间(秒) -->  
            <property name="maxIdleTime"><value>10</value></property>  
        </bean>  

c.自动扫描配置,使用标签可以自动扫描base-pack和子包下的java文件,需配合注解
@Component@Controller@Service等注解,把这些类注册为bean 、

    <context:component_scan base-pack="com.ven.*">  
        <!-- 不扫描controller类型 -->  
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />  
    </context:component_scan>  

d.集成myBatis

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <!-- 引用配置连接池 -->  
        <property name="dataSource" ref="dataSource" />  
        <!-- myBatis配置文件 -->  
        <property name="configLocation" value="classpath:mybatis.xml" />  
        <!-- mapper配置路径 -->  
        <property name="mapperLocations">  
            <list>  
                <value>classpath:com/ven/mapper/*.xml</value>  
            </list>  
        </property>  
    </bean>  

e.mapper扫描配置

    <bean class="org.mybatis.spring.mapper.MapperScanerConfigurer">  
        <property name="basePackage" class="com.ven.mapper">  
    </bean>  

f.myBatis事务管理

    <bean id="transactionManager" class="org.springframework.jdbc.datasouce.DataSourcesTransactionManager">  
        <property name="dataSource" value="dataSource" />  
    </bean>  

2、jdbc.properties(数据库链接)的配置

    mysql.driver_class=com.mysql.jdbc.Driver  
    mysql.connection.url=jdbc:mysql://location:3306/DB  
    mysql.connection.user=root  
    mysql.connection.password=root  

3、日志管理文件log4j.properties的配置

    #log4j.rootLogger=DEBUG, A1, R  
    log4j.rootLogger=INFO, A1, R  
    #log4j.rootLogger=WARN,A1, R  
    log4j.appender.A1=org.apache.log4j.ConsoleAppender  
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
    log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n  
    #log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %m%n  

    log4j.appender.R=org.apache.log4j.RollingFileAppender  
    log4j.appender.R.MaxFileSize=1024KB  
    log4j.appender.R.MaxBackupIndex=10  
    log4j.appender.R.File=/log/xxx.log  
    #log4j.appender.R=org.apache.log4j.DailyRollingFileAppender  
    log4j.appender.R.layout=org.apache.log4j.PatternLayout  
    #log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %m%n  
    log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n  
    #log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %m%n  
    #log4j.appender.R.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}] %m%n  
    #log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n  

4、myBatis配置文件的配置
通过别名可以缩短类名长度,但只能在配置文件中使用

   <configuration>  
        <!-- 别名 -->  
        <typeAliases>  
            <typeAlias type="com.ven.entity.xxx" alias="xxx" />  
        </typeAliases>  
    </configuration>  

5、web.xml的配置

  <!-- server下多个项目配置log打印到对应目录下  
    <context-param>  
        <param-name>webAppRootKey</param-name>  
        <param-value>ProjectName.root</param-value>  
    </context-param>  
    <!-- spring 载入lo4j配置文件 -->  
    <context-param>  
        <param-name>lo4jConfigLocation</param-name>  
        <param-vanlue>classpath:log4j.properties<param-velue>  
    </context-param>  
    <!-- spring默认刷新log4j配置的时间,秒  
    <context-param>  
        <param-name>lo4gRefreshInterval</param-name>  
        <param-value>60000</param-value>  
    </context-param>  
    <!-- lo4j监听 -->  
    <listener>  
        <listener-class>org.springframework.web.util.Log4jConfigLocation<listener-class>  
    </listener>  
    <!-- 设置spring容器加载配置 -->  
    <context-param>  
        <param-name>contextConfgLocation</param-name>  
        <param-value>classpath:springContext/*Context.xml</param-value>  
    </context-param>  
    <!-- 加载spring容器 -->  
    <listener>  
        <listener-class>org.springframework.web.context.ContexLoaderListener</listener-class>  
    </listener>  
    <!-- 防止内存泄漏监听器 -->  
    <listener>  
        <listener-class>org.springframework.web.util.IntrospectorListener</listener-class>  
    </listener>  
    <!-- springmvc核心控制器 -->  
    <servlet>  
        <servlet-name>springmvc</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispacherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>/WEB-INF/springmvc.xml</param-value>  
        </init-param>  
        <!-- 立即启动 -->  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <!-- servlet-mapping配置 -->  
    <servlet-mapping>  
        <servlet-name>springmvc</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  
    <!-- 编码过滤器 -->  
    <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>  
    </filter>  
    <filter-mapping>  
        <filter-name>characterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    <filter-mapping>  

6、springmvc.xml的配置

    <!-- 注解Controller扫描器 -->  
    <context:component-scan base-pascage="com.ven.Controller" />  
    <!-- 静态资源访问 -->  
    <mvc:resources location="/img/" mapping="/img/**" />  
    <mvc:resources location="/js/" mapping="/js/**" />  
    <mvc:resources location="/commom/" mapping="/common/**" />  
    <!-- 注解功能的默认配置,处理器和映射器 -->  
    <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />  
    <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>  
    <!-- 前后缀配置 -->  
    <bean name="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >  
        <property name="prefix" value="/WEB-INFO/pages/"/>  
        <property name="suffix"  value=".jsp"/>  
    </bean>
最后修改:2018 年 05 月 14 日
如果觉得我的文章对你有用,请随意赞赏