IDEA搭建SSMM框架(详细过程)

IDEA搭建SSMM框架(详细过程)

相关环境

搭建步骤

创建项目工程

1、创建工程,选择Maven
创建工程

2、填写项目信息
项目名称填写

Maven选择

位置选择

初始化配置

1、Maven配置
先说Maven的项目依赖配置文件pom.xml,我们进入mvn repository 查找需要搜索的包结果如图:
spring-core-maven

点击进入第一个搜索结果,然后各种版本
各个版本信息

点击所需版本。如图:
具体版本信息及pom.xml配置
里面的dependency即为所需标签。

工程整体结构

总体工程结构:
总体工程结构

包括:Maven包依赖配置文件pom.xml、springMVC配置文件spring-mvc.xml、mybatis数据看配置文件spring-mybatis.xml jdbc.properties以及mybatis自动构建数据库工具配置文件generatorConfig.xml generator.properties、log日志配置文件log4j.properites、web配置文件web.xml、java类相关等。

IDEA默认快捷键选中+F4唤出工程设置,可以配置相关的Sources、Tests、Resources等文件夹类型。

Maven配置文件

pom.xml添加依赖包信息如下:


4.0.0
SSMM
SSMM
war
1.0-SNAPSHOT
SSMM Maven Webapp
http://maven.apache.org



<spring.version>4.1.3.RELEASE</spring.version>

<mybatis.version>3.2.8</mybatis.version>

<slf4j.version>1.6.4</slf4j.version>
<log4j.version>1.2.17</log4j.version>



junit
junit
4.11

test



org.springframework
spring-core
${spring.version}


org.springframework
spring-web
\({spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>\){spring.version}


org.springframework
spring-tx
${spring.version}


org.springframework
spring-jdbc
${spring.version}


org.springframework
spring-webmvc
\({spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>\){spring.version}


org.springframework
spring-context-support
${spring.version}


org.springframework
spring-test
\({spring.version}</version> </dependency> <!-- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>\){mybatis.version}



org.mybatis
mybatis-spring
1.2.2



javax
javaee-api
7.0



mysql
mysql-connector-java
5.1.30



commons-dbcp
commons-dbcp
1.2.2



jstl
jstl
1.2




log4j
log4j
\({log4j.version}</version> </dependency> <!-- 格式化对象,方便输出日志 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>\){slf4j.version}


org.slf4j
slf4j-log4j12
${slf4j.version}




org.codehaus.jackson
jackson-mapper-asl
1.9.13



commons-fileupload
commons-fileupload
1.3.1


commons-io
commons-io
2.4


commons-codec
commons-codec
1.9



org.mybatis.generator
mybatis-generator-core
1.3.5



SSMM


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

src/main/resources/mybatis-generatorConfig/generatorConfig.xml
true
true




web配置

web.xml

web.xml配置添加如下信息:



Archetype Created Web Application



contextConfigLocation
classpath:spring-mybatis.xml



encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
true

encoding
UTF-8



encodingFilter
/*



org.springframework.web.context.ContextLoaderListener



org.springframework.web.util.IntrospectorCleanupListener



log4jConfigLocation
classpath:log4j.properties



SpringMVC
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:spring-mvc.xml

1
true


SpringMVC


*.action


/index.jsp

spring-mvc.xml




<context:component-scan base-package="com.ssm.controller" />

















spring-mybatis.xml




<context:component-scan base-package="com.ssm" />































jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.4.45.19:3306/shopping
jdbc.username=root
jdbc.password=root
#定义初始连接数
jdbc.initialSize=0
#定义最大连接数
jdbc.maxActive=20
#定义最大空闲
jdbc.maxIdle=20
#定义最小空闲
jdbc.minIdle=1
#定义最长等待时间
jdbc.maxWait=60000

log4j.properties

log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

文件大小到达指定尺寸的时候产生一个新的文件

log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n

mybatis自动构建

在pom.xml中有如下配置:


SSMM


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

src/main/resources/mybatis-generatorConfig/generatorConfig.xml
true
true



mybatis-generatorConfig/generatorConfig.xml






































mybatis-generatorConfig/generator.properties

jdbc.driverLocation=D:\Repositories\Maven\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.4.45.19:3306/shopping
jdbc.username=root
jdbc.password=root

点击构建插件
添加构建插件

添加Mybatis构建插件

输入命令:mybatis-generator:generate -e
输入命令

选中generator插件,点击运行即可,在generatorConfig.xml配置的相关文件将会自动生成。其中数据库驱动包需要指定路径。构建的内容如下所示。

自动构建内容

注意:

在IDEA中,生成在mapping中的xml会报找不到的错误,这将mapping中的内容拷贝到resources/mapper中,并指定mapper为resources类型文件夹。
mapping->mapper
对应spring—mybatis.xml中的如下内容:







Java类

在main文件夹下创建文件夹java,点击右键将java作为source文件夹,并生成相应包结构:
title

service

接口

// UserService.java
package com.ssm.service;

import com.ssm.model.User;

public interface UserService {
public User findUserById(int id);
public void addUser(User user);
}

实现类

// UserServiceImpl.java
package com.ssm.service;

import com.ssm.dao.UserMapper;
import com.ssm.model.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

@Transactional
@Service
public class UserServiceImpl implements UserService {

@Resource
private UserMapper userMapper;

public User findUserById(int id) {
return userMapper.selectByPrimaryKey(id);
}

public void addUser(User user) {
userMapper.insert(user);
}
}

测试类

测试包结构

将java文件夹设置为Tests类型,并添加测试类

// TestMybatis.java
package com.ssm.test;

import com.alibaba.fastjson.JSON;
import com.ssm.model.User;
import com.ssm.service.UserService;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

@RunWith(SpringJUnit4ClassRunner.class) //表示继承了SpringJUnit4ClassRunner类
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class TestMybatis {
private Logger logger = Logger.getLogger(TestMybatis.class);

@Resource
private UserService userService;

@Test
public void findUserByIdTest() {
User user = userService.findUserById(1);
System.out.println(user.getUsername());
logger.info("值:"+user.getUsername());
logger.info(JSON.toJSONString(user));
}

}

Controller

// UserController.java
package com.ssm.controller;

import com.ssm.model.User;
import com.ssm.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;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user")
public class UserController {

@Autowired
private UserService userService;

@RequestMapping("/QueryUser.action")
public String toIndex(HttpServletRequest request, Model model){
int userId = Integer.parseInt(request.getParameter("id"));
User user = this.userService.findUserById(userId);
model.addAttribute("user", user);
return "User";
}
}

JSP

// User.jsp
<%--
Created by IntelliJ IDEA.
Date: 2017/11/9
Time: 16:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


SSM框架整合


${user.username},你好!

数据库脚本

sql_table.sql

CREATE TABLE items (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL COMMENT '商品名称',
price float(10,1) NOT NULL COMMENT '商品定价',
detail text COMMENT '商品描述',
pic varchar(64) DEFAULT NULL COMMENT '商品图片',
createtime datetime NOT NULL COMMENT '生产日期',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

/*Table structure for table orderdetail */

CREATE TABLE orderdetail (
id int(11) NOT NULL AUTO_INCREMENT,
orders_id int(11) NOT NULL COMMENT '订单id',
items_id int(11) NOT NULL COMMENT '商品id',
items_num int(11) DEFAULT NULL COMMENT '商品购买数量',
PRIMARY KEY (id),
KEY FK_orderdetail_1 (orders_id),
KEY FK_orderdetail_2 (items_id),
CONSTRAINT FK_orderdetail_1 FOREIGN KEY (orders_id) REFERENCES orders (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT FK_orderdetail_2 FOREIGN KEY (items_id) REFERENCES items (id) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

/*Table structure for table orders */

CREATE TABLE orders (
id int(11) NOT NULL AUTO_INCREMENT,
user_id int(11) NOT NULL COMMENT '下单用户id',
number varchar(32) NOT NULL COMMENT '订单号',
createtime datetime NOT NULL COMMENT '创建订单时间',
note varchar(100) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (id),
KEY FK_orders_1 (user_id),
CONSTRAINT FK_orders_id FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

/*Table structure for table user */

CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(32) NOT NULL COMMENT '用户名称',
birthday date DEFAULT NULL COMMENT '生日',
sex char(1) DEFAULT NULL COMMENT '性别',
address varchar(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;

sql_data.sql

insert into user(id,username,birthday,sex,address) values (1,'王五',NULL,'2',NULL),(10,'张三','2014-07-10','1','北京市'),(16,'张小明',NULL,'1','河南郑州'),(22,'陈小明',NULL,'1','河南郑州'),(24,'张三丰',NULL,'1','河南郑州'),(25,'陈小明',NULL,'1','河南郑州'),(26,'王五',NULL,NULL,NULL);
insert into orders(id,user_id,number,createtime,note) values (3,1,'1000010','2015-02-04 13:22:35',NULL),(4,1,'1000011','2015-02-03 13:22:41',NULL),(5,10,'1000012','2015-02-12 16:13:23',NULL);
insert into orderdetail(id,orders_id,items_id,items_num) values (1,3,1,1),(2,3,2,3),(3,4,3,4),(4,4,2,3);
insert into items(id,name,price,detail,pic,createtime) values (1,'台式机',3000.0,'该电脑质量非常好!!!!',NULL,'2015-02-03 13:22:53'),(2,'笔记本',6000.0,'笔记本性能好,质量好!!!!!',NULL,'2015-02-09 13:22:57'),(3,'背包',200.0,'名牌背包,容量大质量好!!!!',NULL,'2015-02-06 13:23:02');

结果截图

访问

参考

SSM框架整合(Spring + SpringMVC + Mybatis + Maven + IDEA)

SSM整合工程的搭建

posted @ 2017-11-10 16:14  KeepGulp  阅读(2827)  评论(1)    收藏  举报