现在是北京时间2016年11月2日凌晨1点10分18秒,我在这里写下这篇博客,希望能帮到有需要的朋友,由于个人水平有限,有不正确的地方还请各位多多指教,不甚感激!
前期工作准备
1、软件准备
JDK:1.7
IDE:Eclipse mars
Spring:4.3.0
Spring Mvc:4.3.0
MyBatis:3.4.0
数据库:mysql-5.6.24
2、硬件准备:
本尊(全球限量一个,产地:贵州凯里,当前版本:23.0,型号:男),华硕笔记本一台,好视力台灯一台,椅子一张。
正式开始配置
本来想一边讲解配置过程,一边创建目录,但是这样感觉不是很清晰,所以我干脆先把工程结构贴出来,方便大家对整个项目的结构有个大概了解,小小的运用了先全局后部分的哲学思想,哈哈。看,这就是我们要完成的工程图
看着好复杂的样子,不过不要害怕,作为一名合格的程序员就应该有跟bug革命到底的精神,下面我们来开始配置项目。
1.配置数据库
右键项目新建一个config源文件夹,用来存放我们的各种配置文件。然后在config下新建文件jdbc.properties,这个文件用来配置数据库信息,内容如下:
#MySql 数据库驱动
jdbc.driver=com.mysql.jdbc.Driver
#jdbc:mysql://连接地址:端口号(默认3306)/数据库名
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring
#用户名
jdbc.username=root
#密码
jdbc.password=123456
#连接池初始化连接
jdbc.initialSize=0
#连接池最大连接数
jdbc.maxActive=20
#连接池最大空闲连接
jdbc.maxIdle=20
#连接池最小空闲连接
jdbc.minIdle=1
#等待超时
jdbc.maxWait=60000
2.配置日志log4j
在项目下新建文件夹logs,日志文件将往这里面写;同样在config下新建文件log4j.properties,里面是关于日志的一些配置,内容如下:
#定义LOG输出级别
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
在config目录下新建一个xml文件,命名为spring-mybatis.xml,内容如下
为了测试,只配置了最基本的功能,你可以根据自己的项目需求进行配置。
4.测试spring与mybatis的整合
在src源文件夹下新建以下包
看文件名应该能猜出个大概,这些包类有哪些功能,你应该明白,如果不明白,建议你还是再学学框架吧。
在数据库新建一张user表用于测试,我的表结构如下:
表建好后根据你的表字段就可以编写dao,mapper和Pojo了,这里介绍一个自动生成mybatis mapper的jar,参考下面的博文:
SSM框架——使用MyBatis Generator自动创建代码
新手不建议使用,还是自己手写比较好,把生成的文件复制到项目中,然后开始编写测试代码。新建test源文件夹,编写一个测试类。
package com.pyx.test;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.pyx.pojo.User;
import com.pyx.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class TestMyBatis {
@Resource
private UserService userService = null;
@Test
public void mytest() {
User user = userService.getUserById(1);
System.out.println("查询结果:"+user.getUsername());
}
}
1,因为用了JUnit4插件测试,所以务必确认你的项目中已经加入JUnit4类库,否则会报找不到mytest方法的错误。
2,
这里的mapperLocations一定要写对,我就是因为mapper后面少了一个“/”,所以一直在报找补到mapper方法的错误,还有如果你是用自动生成工具生成的代码,那请你一定要留意mapper文件中的包名是否正确,其他两个pojo和dao如果包名不对会立即显示错误的,但是mapper就不会,所以如果tomcat启动异常,一定要查看这个文件。
接下来开始测试,选择mytest方法右键调试方式->JUnit4测试,如果控制台输出如下结果,表示spring与mybatis已经整合成功,如果报错,根据bug信息慢慢调试吧。
5.整合spring mvc
config下新建spring-mvc.xml文件,内容如下
text/html;charset=UTF-8
Spring Mybatis
contextConfigLocation
classpath:spring-mybatis.xml
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
true
encoding
UTF-8
encodingFilter
/*
org.springframework.web.context.ContextLoaderListener
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
SpringMVC
/
default
/static/*
/index.jsp
package com.pyx.controller;
import java.util.Date;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.pyx.pojo.User;
import com.pyx.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
//查询用户
@RequestMapping("/list")
public String list(HttpServletRequest request,Model model){
int userId = Integer.parseInt(request.getParameter("id"));
User user = this.userService.getUserById(userId);
model.addAttribute("user", user);
return "user";
}
//更新用户
@RequestMapping("/update")
public String update(HttpServletRequest request,Model model){
int userId = Integer.parseInt(request.getParameter("id"));
User user = new User();
user.setSid(userId);
user.setUsername("隔壁老王");
user.setPassword("258258");
int status = this.userService.updateUserById(user);
model.addAttribute("msg", status);
return "ok";
}
//添加用户
@RequestMapping("/add")
public String addUser(HttpServletRequest request,Model model) {
User user = new User();
//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-mm-dd");
Date birth=null;
user.setUsername("panyx");
user.setPassword("258258");
user.setBirth(birth);
user.setEmail("[email protected]");
user.setSex("女");
int status = this.userService.insertUser(user);
model.addAttribute("msg", status);
return "add-ok";
}
//ajax测试页面
@RequestMapping("/test")
public String mytest(Model model){
return "test";
}
//测试ajax请求,返回json数据
@RequestMapping(value="jsontest", method=RequestMethod.POST)
@ResponseBody
public User jsonTest(Model model){
User user = this.userService.getUserById(1);
return user;
}
}
/WEB-INF/jsp,新建一个user.jsp测试页面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
测试
${user.username}
6.测试spring mvc
启动tomcat,浏览器输入http://localhost:8080/你的项目名/user/list?id=1
如果能出现上图的效果就说明我们的框架整合完美结束了,但在实际开发中,肯定会用到ajax,那我们就再配置一下ajax吧,其实在spring-mvc.xml中我们已经做了返回json数据的配置,只要把jackson.jar包引进去就可以了。我们再写一个测试页面,用来测试ajax,test.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
ajax测试
方法在UserController中都已经写好了,在浏览器中输入:http://localhost:8080/myspring/user/test,
到此,spring,spring-mvc,mybatis完美的融合在了一起!
特别感谢:
参考了博主shu_lin的文章,SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
SSM框架——使用MyBatis Generator自动创建代码
工程所需jar包下载:spring-4.3.0和mybatis-3.4整合所需jar包
提取码:vsk7