我们看招聘信息的时候,经常会看到这一点,需要具备 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

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

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。

读入数据库连接相关参数(可选)

配置数据连接池

配置连接属性,可以不读配置项文件直接在这里写死

配置druid, 配置某些常用的属性

配置SqlSessionFactory对象(mybatis)

扫描dao层接口,动态实现dao接口,也就是说不需要daoImpl,sql和参数都写在xml文件上

spring-dao.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

因为数据库配置相关参数是读取配置文件,所以在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文件。

使用自增主键

使用列别名

开启驼峰命名转换 create_time -> createTime

mybatis-config.xml

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

第三步:配置 service 层

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

扫描service包所有注解 @Service

配置事务管理器,把事务管理交由spring来完成

配置基于注解的声明式事务,可以直接在方法上@Transaction

spring-service.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

第四步:配置 web 层

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

开启SpringMVC注解模式,可以使用@RequestMapping,@PathVariable,@ResponseBody等

对静态资源处理,如js,css,jpg等

配置jsp 显示ViewResolver,例如在controller中某个方法返回一个string类型的"login",实际上会返回"/WEB-INF/login.jsp"

扫描web层 @Controller

springmvc.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

5242880

第五步:配置web.xml

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

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1" metadata-complete="true">

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

class="ch.qos.logback.core.rolling.RollingFileAppender">

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

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="root">

targetProject="./src/main/java">

targetProject="./src/main/resources">

targetPackage="com.liuyishi.ssm.mapper"

targetProject="./src/main/java">

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

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

ssm框架mysql自增_手把手教你整合最优雅SSM框架相关推荐

  1. [转载] 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis

    参考链接: Java继承类的对象创建 本文发表于2016年6月,写于作者学生时期.文中使用到的技术和框架可能不是当下最佳实践,甚至很不"优雅".但对于刚接触JavaEE和Sprin ...

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

    我们看招聘信息的时候,经常会看到这一点,需要具备 SSM 框架的技能, SpringMVC 可以完全替代 Struts,配合注解的方式,编程非常快捷,而且通过 restful 风格定义 url,让地址 ...

  3. 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis

    http://blog.csdn.net/qq598535550/article/details/51703190 我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课 ...

  4. mysql mtbf计算_手把手教你计算MTBF(平均故障间隔时间),有实例!

    原标题:手把手教你计算MTBF(平均故障间隔时间),有实例! MTBF(平均故障间隔时间) MTBF,即平均故障间隔时间,英文全称是"Mean Time Between Failure&qu ...

  5. 用mysql做文本挖掘_手把手教你做文本挖掘

    一.文本挖掘定义 文本挖掘指的是从文本数据中获取有价值的信息和知识,它是数据挖掘中的一种方法.文本挖掘中最重要最基本的应用是实现文本的分类和聚类,前者是有监督的挖掘算法,后者是无监督的挖掘算法. 二. ...

  6. asp mysql 留言本_手把手教你用ASP制作留言本

    六.制作管理登陆页面 留言本的管理功能对于留言本来说就不言而喻了,像论坛的登陆功能就是一个很好的例子,不过我们做留言本基本上有删除功能就行了,写这个教程是为了更多的ASP入门者更好的了解ASP,所以旨 ...

  7. 软件_手把手教vscode配置c++,python开发环境

    原创:软件_手把手教vscode配置c++,python开发环境 之前主用Python作为项目开发语言,将项目迁移到arm边缘盒子上后发现arm的cpu不给力,软件速度低于预期,所以计划将部分程序改为 ...

  8. 手把手教你搭建java接口自动化测试框架(四):断言、生成测试报告

    手把手教你搭建java接口自动化测试框架(四):断言.生成测试报告 上一集说到post和Get请求,请求后得到的响应(即接口返回值)是我们想要的吗 比如网站上get接口文档说明 : "dat ...

  9. 2021win11最新最全MySQL下载安装教程——手把手教你安装MySQL

    2021win11最新最全MySQL下载安装教程--手把手教你安装MySQL 最近重装了win11,给我MySQL整没了,故今天重新装一下. 第一步,进入官网 https://www.mysql.co ...

最新文章

  1. 由于授权协议中的一个错误,远程计算机中断了会话
  2. Qt Creator指定环境设置
  3. 线程回顾Thread
  4. linux有没有递归函数,递归函数
  5. 8、mysql数据表中数据的增删改
  6. Lowest Common Multiple Plus ——ACM
  7. 电容的q值计算公式_在设计电路中电容容量大小、耐压等级选取详解 (转)
  8. 云图说|DRS数据对比——带您随时观测数据一致性
  9. list 分组求和_数据分析-python-分组聚合-2
  10. 22 模块:宏伟蓝图
  11. 如何在Eclipse导入Java源代码
  12. 嵌入式接口之GPIO驱动LED的实验(附完整代码和工程以及详细的调试过程)
  13. Aho-Corasick算法学习
  14. Activemq配置文件详解
  15. 历届全国大学生GIS应用技能大赛试题及数据
  16. 百度地图 sdk 使用小结(行动轨迹)
  17. 纯CSS画基本图形(矩形、圆形、三角形、多边形、爱心)
  18. Couldn‘t terminate the existing process for com.hopechart.gallery
  19. 微信小程序提示:https://api.map.baidu.com 不在以下 request 合法域名列表中
  20. vue2 props

热门文章

  1. 2021年五月下旬推荐文章(2)
  2. 终于知道为什么NVIDIA的linux驱动这么烂了,一波官方文档告诉你:Linux GPU Driver Developer’s Guide
  3. GitHub#python#:用自组织映射解决旅行商问题
  4. web前端基础(05htmlimg标签和滚动标签)
  5. 关于新手的一个bug,pycharm和IDea的ctrl+C和ctrl+V不起作用
  6. java的Random类
  7. linux通过vnc掉出浏览器,VNC远程Linux桌面控制好用 --尤其是用浏览器
  8. cygwin-1.7 离线安装包_.NET Framework所有版本微软官方下载地址
  9. c语言学习-编写函数计算式子:S=2*1*1!+2*2*2!+……+2n*n!的值。要求编写自定义函数分别求解2n和n!,在编写求解S的函数。
  10. RHEL 8 - 用podman/buildah/skopeo构建systemd级别运行容器