SpringMVC+Spring+Mybatis框架集成

一、基本概念

1.Spring
     Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

2.SpringMVC
     Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

3.MyBatis
     MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、使用Maven创建web项目

1.打开Eclipse, 选择File -> New -> Other,在New窗口中选择 Maven -> Maven Project;点击Next。

2.选择项目路径,这里选择Use default Workspace location默认工作空间。

3.选择项目类型,在Artifact Id中选择maven-archetype-webapp

4.输入Group Id和 Artifact Id,package可以不写。

Group Id:类似于包名
Artifact Id:项目的名称
Version:初始的版本号,一般不需要改动
其他选项设置为空,点击Next创建项目,如下图:

5.点击Finish,会生成一个这样目录的项目。

6.修改项目编码方式

在项目上右键 -> Properties -> Resource -> Text file encoding -> 改为“utf-8”。

7.添加Source文件夹

接下来需要添加src/main/java、src/test/java、src/test/resources三个文件夹。注意不是建普通的Folder,而是Source Folder。在项目上右键new -> Other,在New窗口中选择

Java -> Source Folder。

如果出现了下面的情况,其实是文件夹已经存在了,只是我们看不到。

8.在项目上右键,选择Properties,在弹出的属性窗口中依次选择Java Build Path -> Libraries -> JRE System Library -> Edit。

9.在Edit Library窗口中修改JRE为jdk1.7.0_25。

10.设置好之后的目录结构如下图所示:

这时看到src/main/java和src/test/java文件夹就已经显示出来了。

11.让项目使用jdk 1.7编译

在项目上右键 -> 选择Properties -> 选择Java Compiler -> 将Compiler Compliance Level 改为“1.7”。

12.更改class路径

右键项目,选择Java Build Path -> Source,下面应该有4个文件夹,src/main/java,src/main/resources,src/test/java,src/test/resources。双击每个文件夹的Output folder,选择路径。src/main/java,src/main/resources,选择target/classes;src/test/java ,src/test/resources, 选择target/test-classes。选上Allow output folders for source folders。(如果没有选上的话)

13.把项目变成Dynamic Web项目 

右键项目,选择Properties,在属性窗口中选择Project Facets,修改Java版本号为1.7,默认为1.5或其他版本。注:先去掉“Dynamic Web Module”,然后再保存。

14.接下来继续右键项目 -> Properties ->选择Project Facets -> 勾选“Dynamic Web Module”,选择版本为3.0 -> 然后点击下方的“Further configuration available...”。

15.在弹出的窗口中修改Content directory为“src/main/webapp”。

设置好之后的项目结构如下图所示,可以看到在webapp下面多了一个META-INF文件夹。

或者还有一种做法,就是在“Modify Faceted Project”窗口中不用修改Content directory,即用他的默认值“WebContent”。

接下来观察我们的项目结构,多了一个WebContent目录。

这个结构不符合maven的结构,我们还要做如下修改:

把上图WebContent下面两个目录 META-INF ,WEB-INF 直接剪切到src/main/webapp目录下,并删掉WebContent目录即可。

16.设置部署程序集(Web Deployment Assembly)

在项目上右键,选择Properties -> Deployment Assembly,点击进去后,如下图:

此处列表是,部署项目时,文件发布的路径。

(1)我们删除跟test相关的项,因为test是测试使用,并不需要部署。

(2)设置将Maven的jar包发布到lib下。

在右边点击“Add”按钮,在弹出的窗口中选择Java Build Path Entries。

点击Next,选择Maven Dependencies

点击Finish,然后可以看到已经把Maven Dependencies添加到Web应用结构中了,完成后如下图:

17.至此一个基于maven的webapp就建立好了,并可以直接从eclipse中发布到tomcat。发布完成后,进入到tomcat的部署路径,我的是D:\apache-tomcat-7.0.27\webapps\SSMProDemo,发现WEB-INF目录下自动生成了lib目录,并且所有依赖的jar包也都已经部署进来。如果没有lib目录,说明项目依赖的jar包没有部署进来,这时运行程序会报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener。

三、创建数据库和表

打开MySQL数据库,创建两张表,一张用于存放用户信息的表tb_user,另一张为字典表tb_dict。SQL脚本如下:

复制代码

/*
Navicat MySQL Data Transfer

Source Server         : local
Source Server Version : 50617
Source Host           : localhost:3306
Source Database       : demodb

Target Server Type    : MYSQL
Target Server Version : 50617
File Encoding         : 65001

Date: 2017-01-31 18:39:18
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `tb_dict`
-- ----------------------------
DROP TABLE IF EXISTS `tb_dict`;
CREATE TABLE `tb_dict` (
  `dictid` int(11) NOT NULL AUTO_INCREMENT COMMENT '字典id',
  `field` varchar(15) DEFAULT NULL COMMENT '对照字段',
  `fieldname` varchar(20) DEFAULT NULL COMMENT '对照字段名称',
  `code` varchar(10) DEFAULT NULL COMMENT '代码',
  `codedesc` varchar(100) DEFAULT NULL COMMENT '代码描述',
  `enabled` varchar(2) DEFAULT '1' COMMENT '启用状态(0:禁用;1:启用)',
  `sortno` int(4) DEFAULT NULL COMMENT '排序号',
  PRIMARY KEY (`dictid`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_dict
-- ----------------------------
INSERT INTO `tb_dict` VALUES ('1', 'SEX', '性别', '1', '男', '1', '1');
INSERT INTO `tb_dict` VALUES ('2', 'SEX', '性别', '2', '女', '1', '2');
INSERT INTO `tb_dict` VALUES ('3', 'EDU', '学历', '1', '高中', '1', '1');
INSERT INTO `tb_dict` VALUES ('4', 'EDU', '学历', '3', '本科', '1', '3');
INSERT INTO `tb_dict` VALUES ('5', 'EDU', '学历', '4', '研究生', '1', '4');
INSERT INTO `tb_dict` VALUES ('6', 'EDU', '学历', '5', '博士', '1', '5');
INSERT INTO `tb_dict` VALUES ('7', 'EDU', '学历', '2', '专科', '1', '2');

-- ----------------------------
-- Table structure for `tb_user`
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) DEFAULT NULL COMMENT '姓名',
  `user_sex` varchar(2) DEFAULT NULL COMMENT '性别',
  `user_birthday` date DEFAULT NULL COMMENT '出生日期',
  `user_email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  `user_edu` varchar(2) DEFAULT NULL COMMENT '学历',
  `user_telephone` varchar(30) DEFAULT NULL COMMENT '联系方式',
  `user_address` varchar(100) DEFAULT NULL COMMENT '住址',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', '李磊', '1', '1985-01-12', 'lilei123@sina.com', '3', '13211335451', '北京市东城区XXXX', '2017-01-31 18:24:41');
INSERT INTO `tb_user` VALUES ('2', '张华', '2', '1988-11-15', 'zhanghuajig@163.com', '3', '13811362254', '北京市西城区XXXX', '2017-01-31 18:29:08');
INSERT INTO `tb_user` VALUES ('3', '王媛媛', '2', '1990-04-06', 'yuanyuan112@sina.com', '3', '13511784568', '北京市西城区XXXX', '2017-01-18 10:30:48');
INSERT INTO `tb_user` VALUES ('4', '陈迪', '1', '1990-06-16', 'chendi0616@sina.com', '3', '13511697892', '北京市东城区XXXX', '2017-01-10 09:20:50');
INSERT INTO `tb_user` VALUES ('5', '王海东', '1', '1989-05-23', 'wanghaidong@163.com', '4', '13811981290', '北京市石景山区苹果园XXXXX', '2017-01-12 18:33:31');
INSERT INTO `tb_user` VALUES ('6', '李雪梅', '2', '1985-05-12', 'lixuemei@163.com', '2', '13911378945', '北京市朝阳区XXX', '2017-01-27 18:34:42');
INSERT INTO `tb_user` VALUES ('7', '张扬', '1', '1988-04-12', 'zhangyang11@sina.com', '3', '13611651245', '北京市石景山区XXXX', '2017-01-24 18:35:46');
INSERT INTO `tb_user` VALUES ('8', '赵庆', '1', '1986-05-06', 'zhaoqing56@163.com', '2', '13599632147', '北京市朝阳区XXX', '2017-01-31 18:38:57');

复制代码

表结构如下所示:

四、添加依赖包

项目主要依赖的jar包有Spring核心包、Spring AOP包、Spring MVC包、MyBatis ORM包、MyBatis-Spring适配包、JSTL、JUnit、Log4j2等,具体的pom.xml文件如下:

复制代码

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demo</groupId>
  <artifactId>SSMProDemo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SSMProDemo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <spring.version>4.3.0.RELEASE</spring.version>
  </properties>
    
  <dependencies>
      <!--Spring框架核心库 -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
      </dependency>
      <!-- Spring MVC -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${spring.version}</version>
      </dependency>
      <!-- aspectJ AOP 织入器 -->
      <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.8.9</version>
      </dependency>
      <!--mybatis-spring适配器 -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.0</version>
      </dependency>
      <!--Spring java数据库访问包,在本例中主要用于提供数据源 -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${spring.version}</version>
      </dependency>
      <!--mysql数据库驱动 -->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.38</version>
      </dependency>
      <!--log4j日志包 -->
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>2.6.1</version>
      </dependency>
      <!-- mybatis ORM框架 -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.1</version>
      </dependency>
      <!-- JUnit单元测试工具 -->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.10</version>
      </dependency>
      <!--c3p0 连接池 -->
      <dependency>
          <groupId>c3p0</groupId>
          <artifactId>c3p0</artifactId>
          <version>0.9.1.2</version>
      </dependency>
      <!-- JSTL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值