IDEA搭建SSMM框架(详细过程)
IDEA搭建SSMM框架(详细过程)
相关环境
- Intellij IDEA Ultimate
- Tomcat
- JDK
- MySql 5.6(win32/win64)
- Maven (可使用Intellij IDEA自带的)
搭建步骤
创建项目工程
1、创建工程,选择Maven
2、填写项目信息
初始化配置
1、Maven配置
先说Maven的项目依赖配置文件pom.xml,我们进入mvn repository 查找需要搜索的包结果如图:
点击进入第一个搜索结果,然后各种版本
点击所需版本。如图:
里面的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添加依赖包信息如下:
<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>
web配置
web.xml
web.xml配置添加如下信息:
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中有如下配置:
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-generator:generate -e
选中generator插件,点击运行即可,在generatorConfig.xml配置的相关文件将会自动生成。其中数据库驱动包需要指定路径。构建的内容如下所示。
注意:
在IDEA中,生成在mapping中的xml会报找不到的错误,这将mapping中的内容拷贝到resources/mapper中,并指定mapper为resources类型文件夹。
对应spring—mybatis.xml中的如下内容:
Java类
在main文件夹下创建文件夹java,点击右键将java作为source文件夹,并生成相应包结构:
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" %>
${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');

浙公网安备 33010602011771号