各位童鞋,本文主要搭建SSM框架(Spring,SpringMVC,MyBatic),希望能帮助到刚刚学习这些框架的小伙伴,以及能够直接上手实现业务,代码中都做了详细的说明。废话不多说,下面直接进入主题(文末会附上源码地址)
目录
一 创建Maven项目
二 配置文件
2.1 配置mybatis-config.xml
2.2 配置mapper.xml
2.3 配置jdbc.properties
2.4 配置applicationContext.xml
2.5 配置springmvc-servlet.xml
2.6 配置web.xml
2.7 配置log4j.properties
2.8 引入依赖
三 测试
3.1 创建java文件
3.1.1 UserController类
3.1.2 User实体类
3.1.3 UserService接口
3.1.4 UserServiceImpl实现类
3.1.5 UserMapper类
3.2 创建MySql数据库表
3.3 创建users.jsp文件
3.4 结果
四 源码下载地址
博主这里用的是IDEA创建的项目,和Eclipse的结构都差不多,下图是SSM搭建的整体结构图
这里需要的配置文件主要有1.mybatis-config.xml 2.mapper.xml 3.jdbc.properties 4.applicationContext.xml 5.springmvc-servlet.xml 6.web.xml
这里博主就配置了一个UserMapper,童鞋们,你们可以根据功能的模块需求,自己可以在/resources/mybatis/mapper文件夹下添加添加其他的模块,例如:添加一个订单模块的话,加一个OrderMapper.xml,内容修改下即可
小伙伴们,博主这里用的mysql数据库,这里配置的时候,注意要把第二行改成你们自己的数据库名,以及用户名和密码都要改成你们自己的用户名和密码(注意:后面千万不能加空格,之前博主配置的时候无意中多加了个空格,找了半天错误)
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123
applicationContext配置文件项目启动的时候就要加载了,所以我们要把数据源,事务,切面和一些配置文件引入进来,主要结构有:
1.引入jdbc.properties配置文件位置
2.数据源dataSource
3.引入mybatis-config.xml文件位置
4.引入mapper.xml文件位置
5.事务管理器
6.切面配置
此配置文件主要配置了controller扫描,注解驱动,视图解析器,处理静态资源
此配置文件主要是加载之前配置的springmvc-servlet.xml文件和applicationContext.xml文件以及配置字节码过滤器
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
contextConfigLocation
classpath:spring/applicationContext.xml
org.springframework.web.context.ContextLoaderListener
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc-servlet.xml
1
springmvc
/
此配置文件主要针对异常问题进行定位
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=debug, stdout
在pom.xml文件下添加下这些依赖即可
4.0.0
com.agu
SSMDemo
1.0-SNAPSHOT
war
org.springframework
spring-context
4.3.13.RELEASE
org.springframework
spring-webmvc
4.3.13.RELEASE
org.springframework
spring-jdbc
4.3.13.RELEASE
org.springframework
spring-aspects
4.3.13.RELEASE
org.mybatis
mybatis
3.2.8
org.mybatis
mybatis-spring
1.2.2
mysql
mysql-connector-java
5.1.32
org.slf4j
slf4j-log4j12
1.7.22
com.fasterxml.jackson.core
jackson-databind
2.9.0
com.alibaba
druid
1.0.9
jstl
jstl
1.2
javax.servlet
servlet-api
2.5
javax.servlet
jsp-api
2.0
org.apache.tomcat.maven
tomcat7-maven-plugin
8080
/
测试之前先要添加java文件,创建mysql数据库,以及创建jsp页面
package com.agu.controller;
import java.util.List;
import com.agu.domain.User;
import com.agu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("list")
public String test1(Model model) {
List users = userService.findAllUsers();
model.addAttribute("userList", users);
return "users";
}
}
package com.agu.domain;
import java.io.Serializable;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
// 用户名
private String userName;
// 密码
private String password;
// 姓名
private String name;
// 年龄
private Integer age;
// 性别,1男性,2女性
private Integer sex;
// 出生日期
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
// 创建时间
private Date created;
// 更新时间
private Date updated;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getUpdated() {
return updated;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
@Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", name=" + name
+ ", age=" + age + ", sex=" + sex + ", birthday=" + birthday + ", created=" + created
+ ", updated=" + updated + "]";
}
}
package com.agu.service;
import com.agu.domain.User;
import java.util.List;
public interface UserService {
/**
* 查询所有用户信息
* @return
*/
public List findAllUsers();
}
package com.agu.service.impl;
import com.agu.domain.User;
import com.agu.mapper.UserMapper;
import com.agu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List findAllUsers() {
List list = userMapper.findAllUsers();
return list;
}
}
package com.agu.mapper;
import java.util.List;
import com.agu.domain.User;
public interface UserMapper {
public List findAllUsers();
}
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306
Source Server Version : 50527
Source Host : localhost:3306
Source Database : mybatis
Target Server Type : MYSQL
Target Server Version : 50527
File Encoding : 65001
Date: 2018-07-17 16:28:28
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
`password` varchar(100) DEFAULT NULL COMMENT '密码',
`name` varchar(100) DEFAULT NULL COMMENT '姓名',
`age` int(10) DEFAULT NULL COMMENT '年龄',
`sex` tinyint(1) DEFAULT NULL COMMENT '性别,1男性,2女性',
`birthday` date DEFAULT NULL COMMENT '出生日期',
`created` datetime DEFAULT NULL COMMENT '创建时间',
`updated` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', 'zhangsan', '123456', '张三', '30', '1', '1984-08-08', '2014-09-19 16:56:04', '2014-09-21 11:24:59');
INSERT INTO `tb_user` VALUES ('2', 'lisi', '123456', '李四', '21', '2', '1991-01-01', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES ('3', 'wangwu', '123456', '王五', '22', '2', '1989-01-01', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES ('4', 'zhangwei', '123456', '张伟', '20', '1', '1988-09-01', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES ('5', 'lina', '123456', '李娜', '28', '1', '1985-01-01', '2014-09-19 16:56:04', '2014-09-19 16:56:04');
INSERT INTO `tb_user` VALUES ('6', 'lilei', '123456', '李磊', '23', '1', '1988-08-08', '2014-09-20 11:41:15', '2014-09-20 11:41:15');
INSERT INTO `tb_user` VALUES ('8', 'xiaofeng', '123456', '萧峰', '30', '1', '2018-06-25', '2018-06-25 18:42:25', '2018-06-25 18:42:25');
INSERT INTO `tb_user` VALUES ('12', 'zhendeshuai', '565656', '吴彦祖', '26', '1', '2018-06-26', '2018-06-26 14:55:59', '2018-06-26 15:12:12');
INSERT INTO `tb_user` VALUES ('14', 'jiumozhi', '123456', '鸠摩智', '30', '1', '2018-06-26', '2018-06-26 23:53:15', '2018-06-26 23:53:15');
INSERT INTO `tb_user` VALUES ('21', 'zhangsan1234', '12345', '杰克', '20', '1', '2000-01-01', '2018-07-07 21:50:26', '2018-07-07 21:50:26');
INSERT INTO `tb_user` VALUES ('22', 'zhangsanqwe1', '123455', '张三', '30', '1', '1999-02-25', '2018-07-07 21:51:20', '2018-07-07 21:51:20');
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Insert title here
编号
用户名
姓名
年龄
性别
出生日期
创建时间
更新时间
${user.id}
${user.userName}
${user.name}
${user.age}
男
女
上面文件配置好了之后,可以直接用tomcat服务器启动,启动后的结果如下:
百度网盘:https://pan.baidu.com/s/133xngfk83-SDb6tzDJGujw
密码:uref
如果觉得文章不错,还请帮忙点下"赞",各位的支持,能鼓励我更大的写作热情。谢谢!
我用的是IDEA开发工具,每个工具的配置