手把手教你整合最优雅SSM框架

我们看招聘信息的时候,经常会看到这一点,需要具备 SSM 框架的技能, SpringMVC 可以完全替代 Struts,配合注解的方式,编程非常快捷,而且通过 restful 风格定义 url,让地址看起来非常优雅。 另外,MyBatis 也可以替换 Hibernate,正因为 MyBatis 的半自动特点,我们可以完全掌控 SQL,这会让有数据库经验的程序员(当然不是说我啦~捂脸)能开发出高效率的 SQL 语句,而且 XML 配置管理起来也非常方便。 好了,如果你也认同我的看法,那么下面我们一起来做整合吧!

在写代码之前我们先了解一下这三个框架分别是干什么的? 相信大以前也看过不少这些概念,我这就用大白话来讲,如果之前有了解过可以跳过这一大段,直接看代码!

  • SpringMVC:它用于 web 层,相当于 controller(等价于传统的 servlet 和 struts 的 action),用来处理用户请求。举个例子,用户在地址栏输入 http:// 网站域名 / login ,那么 springmvc 就会拦截到这个请求,并且调用 controller 层中相应的方法,(中间可能包含验证用户名和密码的业务逻辑,以及查询数据库操作,但这些都不是 springmvc 的职责),最终把结果返回给用户,并且返回相应的页面(当然也可以只返回 json/xml 等格式数据)。springmvc 就是做前面和后面过程的活,与用户打交道!!

  • Spring:太强大了,以至于我无法用一个词或一句话来概括它。但与我们平时开发接触最多的估计就是 IOC 容器,它可以装载 bean(也就是我们 java 中的类,当然也包括 service dao 里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字 new。另外 spring 的 aop,事务管理等等都是我们经常用到的。

  • MyBatis:如果你问我它跟鼎鼎大名的 Hibernate 有什么区别?我只想说,他更符合我的需求。第一,它能自由控制 sql,这会让有数据库经验的人编写的代码能搞提升数据库访问的效率。第二,它可以使用 xml 的方式来组织管理我们的 sql,因为一般程序出错很多情况下是 sql 出错,别人接手代码后能快速找到出错地方,甚至可以优化原来写的 sql。

SSM 框架整合配置
好了,前面 bb 那么多,下面我们真正开始敲代码了~
首先我们打开 IED,我这里用的是 idea,创建一个 maven 项目,建立好相应的目录结构

第一步: 使用 maven 引入 jar 包

我用 maven 来管理我们的jar,所以只需要在pom.xml中加入相应的依赖就好了.

pom.xml


    4.0.0
    com.cnblogs.mmall
    mmall
    war
    0.0.1-SNAPSHOT

    
        1.8
        1.8

        4.1.7.RELEASE
        3.3.0
        5.1.37

    
    
        
        
            junit
            junit
            4.11
        

        
        
        
            ch.qos.logback
            logback-classic
            1.1.1
        

        
        
            mysql
            mysql-connector-java
            5.1.37
            runtime
        
        
            com.alibaba
            druid
            1.1.5
        

        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
            org.mybatis
            mybatis-spring
            1.2.3
        

        
        
            taglibs
            standard
            1.1.2
        
        
            jstl
            jstl
            1.2
        
        
            com.fasterxml.jackson.core
            jackson-databind
            2.5.4
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
        

        
        
        
            org.springframework
            spring-core
            ${spring.version}
        
        
            org.springframework
            spring-beans
            ${spring.version}
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        
        
        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
        
            org.springframework
            spring-test
            ${spring.version}
        

        
        
            redis.clients
            jedis
            2.7.3
        
        
            com.dyuproject.protostuff
            protostuff-core
            1.0.8
        
        
            com.dyuproject.protostuff
            protostuff-runtime
            1.0.8
        


        
      

        
        
            commons-collections
            commons-collections
            3.2.1
        

        
        
            commons-fileupload
            commons-fileupload
            1.2.2
        
        
            commons-io
            commons-io
            2.0.1
        

        
        
            com.qiniu
            qiniu-java-sdk
            7.2.0
        

    


    
        ssm
        
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.2

                
                    true
                    true
                
                
                    
                        mysql
                        mysql-connector-java
                        ${mysql-connector.version}
                    
                    
                        org.mybatis.generator
                        mybatis-generator-core
                        1.3.2
                    
                    
                        org.mybatis
                        mybatis
                        ${mybatis.version}
                    
                
            
        
    

第二步:整合 mybatis

我们先在spring文件夹里新建spring-dao.xml文件,因为spring的配置太多,我们这里分三个,分别是dao service mvc。

  1. 读入数据库连接相关参数(可选)
  2. 配置数据连接池
  3. 配置连接属性,可以不读配置项文件直接在这里写死
  4. 配置druid, 配置某些常用的属性
  5. 配置SqlSessionFactory对象(mybatis)
  6. 扫描dao层接口,动态实现dao接口,也就是说不需要daoImpl,sql和参数都写在xml文件上

spring-dao.xml



    
    
    

    
    
        
        
        
        
        
        

        
        

        
        

        
        

        
        

        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
        
        
        
        
        
        
        
        
    

    
    
        
        
        
        
    

因为数据库配置相关参数是读取配置文件,所以在resources文件夹里新建一个jdbc.properties文件,存放我们常用的数据库连接属性.

jdbc.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
username=root
password=root
filters=stat
maxActive=20
initialSize=1
maxWait=60000
minIdle=10
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 'x'
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
maxOpenPreparedStatements=20
removeAbandoned=true
removeAbandonedTimeout=1800
logAbandoned=true

因为这里用到了mybatis,所以需要配置mybatis核心文件,在recources/confing/mybits文件夹里新建mybatis-config.xml文件。

  1. 使用自增主键
  2. 使用列别名
  3. 开启驼峰命名转换 create_time -> createTime

mybatis-config.xml




    
    
        
        

        
        

        
        
    

第三步:配置 service 层

刚弄好dao层,接下来到service层了。在spring文件夹里新建spring-service.xml文件。

  1. 扫描service包所有注解 @Service
  2. 配置事务管理器,把事务管理交由spring来完成
  3. 配置基于注解的声明式事务,可以直接在方法上@Transaction

spring-service.xml





    
    

    
    
        
        
    

    
    
    

    
    
        
            
            
            
            
            
            
            
            
            
        
    

    
    
        
    

第四步:配置 web 层

在spring文件夹里新建springmvc.xml文件。

  1. 开启SpringMVC注解模式,可以使用@RequestMapping,@PathVariable,@ResponseBody等
  2. 对静态资源处理,如js,css,jpg等
  3. 配置jsp 显示ViewResolver,例如在controller中某个方法返回一个string类型的"login",实际上会返回"/WEB-INF/login.jsp"
  4. 扫描web层 @Controller

springmvc.xml



    
    
    
    

    
    

    
    
        
        
        
    

    
    
        
        
            5242880
        
        
    


    
    

第五步:配置web.xml

配置 web.xml, 它在webapp的WEB-INF下



    ssm
    
        index.html
        index.htm
        index.jsp
        default.html
        default.htm
        default.jsp
    


    
    
        DruidWebStatFilter
        com.alibaba.druid.support.http.WebStatFilter
        
            exclusions
            *.js, *.gif, *.jpg, *.png ,*.css, *.ico, /druid/*
        
    
    
        DruidWebStatFilter
        /*
    
    
        DruidStatView
        com.alibaba.druid.support.http.StatViewServlet
    
    
        DruidStatView
        /druid/*
    
    
    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:config/spring/springmvc.xml
        
        
        1
    
    
        springmvc
        /
    

    
        contextConfigLocation
        classpath:config/spring/spring-*.xml
    

    
        org.springframework.web.context.ContextLoaderListener
    

第六步: 其他配置文件

  • 我们在项目中经常会使用到日志,所以这里还有配置日志xml,在resources文件夹里新建logback.xml文件,所给出的日志输出格式也是最基本的控制台s呼出,大家有兴趣查看logback官方文档。
    logback.xml

    
    
    
    
        
            %d %p (%file:%line\)- %m%n
            
            UTF-8
        
    
    
    
    
    
        log/manager_sys.log
        
        
        
            
            
            log/manager_sys.%d.%i.log
            
            30
            
                10MB
            
        
        
            
            
                %d %p (%file:%line\)- %m%n
            
            
            UTF-8 
        
    
    
    
        
    
    
    
    
        
    
  • 我们在实际开发中常常使用 generator-plugin 插件自动生成 pojo 和映射文件, 大大减轻我们的工作量. 其配置如下(放在 resoureces 根目录下):

generatorConfig.xml





    
        
            
            
        
        
        
        

        
        
            
        

        
        
            
            
            
            
        
        
        
            
            
        
        
        
            
            
        
        
        

至此, 我们一共写了8个配置文件. 我们一起来看下最终的配置文件结构图. 这样, 我们的 ssm 框架搭建完成了.

因为我们的连接池启用 Web 监控统计功能, 所以访问 http://localhost:8080/druid/index.html 可以查看 sql 的监控统计功能.实时查看 sql监控, url监控,Session 监控信息.

转载于:https://www.cnblogs.com/liuyishi/p/9170372.html

你可能感兴趣的:(数据库,java,测试)