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'