springmvc+mybatis+marven整合

springmvc+mybatis+maven整合视频

http://www.java1234.com/a/javaziliao/javaweb/2013/0816/591.html

http://blog.csdn.net/evankaka/article/details/48785513

[置顶]Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

标签:SpringMybatisspring mvcMaven

2015-09-30 07:5022038人阅读评论(23)收藏举报

分类:

林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+MySQL的搭建实例,文章写得很详细,有代码有图片,最后也带有运行的效果。

本文工程免费下载

一、准备工作

1. 首先创建一个表:

[sql]view plaincopy

CREATETABLE`t_user` (

`USER_ID`int(11)NOTNULLAUTO_INCREMENT,

`USER_NAME`char(30)NOTNULL,

`USER_PASSWORD`char(10)NOTNULL,

`USER_EMAIL`char(30)NOTNULL,

PRIMARYKEY(`USER_ID`),

KEY`IDX_NAME` (`USER_NAME`)

) ENGINE=InnoDB AUTO_INCREMENT=11DEFAULTCHARSET=utf8

随便插入一些数据:

[sql]view plaincopy

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(1,'林炳文','1234567@','ling20081005@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(2,'evan','123','fff@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(3,'kaka','cadg','fwsfg@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(4,'simle','cscs','fsaf@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(5,'arthur','csas','fsaff@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(6,'小德','yuh78','fdfas@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(7,'小小','cvff','fsaf@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(8,'林林之家','gvv','lin@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(9,'林炳文Evankaka','dfsc','ling2008@126.com');

INSERTINTOt_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL)VALUES(10,'apple','uih6','ff@qq.com');

二、工程创建

1、Maven工程创建

(1)新建


(2)选择快速框架



(3)输出项目名,包,记得选war(表示web项目,以后可以spingMVC连起来用)

(4)创建好之后

目录如下:

(5)检查下

这三个地方JDK的版本一定要一样!!!!

三、sping+mybatis配置

1、整个工程目录如下:

2、POM文件

[html]view plaincopy

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.lin

ssm_project

0.0.1-SNAPSHOT

war


3.2.8.RELEASE


1.6.6

1.2.12


4.10


3.2.1


org.springframework

spring-core

${spring.version}

org.springframework

spring-webmvc

${spring.version}

org.springframework

spring-context

${spring.version}

org.springframework

spring-context-support

${spring.version}

org.springframework

spring-aop

${spring.version}

org.springframework

spring-aspects

${spring.version}

org.springframework

spring-tx

${spring.version}

org.springframework

spring-jdbc

${spring.version}

org.springframework

spring-web

${spring.version}


junit

junit

${junit.version}

test



log4j

log4j

${log4j.version}

org.slf4j

slf4j-api

${slf4j.version}

org.slf4j

slf4j-log4j12

${slf4j.version}



org.springframework

spring-test

${spring.version}

test


org.mybatis

mybatis

${mybatis.version}


org.mybatis

mybatis-spring

1.2.0


mysql

mysql-connector-java

5.1.29

3、java代码-------src/main/java

目录如下:

(1)User.java

对应数据库中表的字段,放在src/main/java下的包com.lin.domain

[java]view plaincopy

packagecom.lin.domain;

/**

* User映射类

*

* @author linbingwen

* @time 2015.5.15

*/

publicclassUser {

privateInteger userId;

privateString userName;

privateString userPassword;

privateString userEmail;

publicInteger getUserId() {

returnuserId;

}

publicvoidsetUserId(Integer userId) {

this.userId = userId;

}

publicString getUserName() {

returnuserName;

}

publicvoidsetUserName(String userName) {

this.userName = userName;

}

publicString getUserPassword() {

returnuserPassword;

}

publicvoidsetUserPassword(String userPassword) {

this.userPassword = userPassword;

}

publicString getUserEmail() {

returnuserEmail;

}

publicvoidsetUserEmail(String userEmail) {

this.userEmail = userEmail;

}

@Override

publicString toString() {

return"User [userId="+ userId +", userName="+ userName

+", userPassword="+ userPassword +", userEmail="+ userEmail

+"]";

}

}

(2)UserDao.java

Dao接口类,用来对应mapper文件。放在src/main/java下的包com.lin.dao,内容如下:

[java]view plaincopy

packagecom.lin.dao;

importcom.lin.domain.User;

/**

* 功能概要:User的DAO类

*

* @author linbingwen

* @since 2015年9月28日

*/

publicinterfaceUserDao {

/**

*

* @author linbingwen

* @since 2015年9月28日

* @param userId

* @return

*/

publicUser selectUserById(Integer userId);

}

(2)UserService.java和UserServiceImpl.java

service接口类和实现类,放在src/main/java下的包com.lin.service,内容如下:

UserService.java

[java]view plaincopy

packagecom.lin.service;

importorg.springframework.stereotype.Service;

importcom.lin.domain.User;

/**

* 功能概要:UserService接口类

*

* @author linbingwen

* @since  2015年9月28日

*/

publicinterfaceUserService {

User selectUserById(Integer userId);

}

UserServiceImpl.java

[java]view plaincopy

packagecom.lin.service;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.stereotype.Service;

importcom.lin.dao.UserDao;

importcom.lin.domain.User;

/**

* 功能概要:UserService实现类

*

* @author linbingwen

* @since  2015年9月28日

*/

@Service

publicclassUserServiceImplimplementsUserService{

@Autowired

privateUserDao userDao;

publicUser selectUserById(Integer userId) {

returnuserDao.selectUserById(userId);

}

}

(4)mapper文件

用来和dao文件对应,放在src/main/java下的com.lin.mapper包下

[html]view plaincopy


"http://mybatis.org/dtd/mybatis-3-mapper.dtd">



SELECT * FROM t_user WHEREUSER_ID= #{userId}

4、资源配置-------src/main/resources

目录如下:

(1)mybatis配置文件

这里没有什么内容,因为都被放到application.xml中去了,放在src/main/resources下的mybatis文件夹下

mybatis-config.xml内容如下:

[html]view plaincopy


"http://mybatis.org/dtd/mybatis-3-config.dtd">

(2)数据源配置jdbc.properties

放在src/main/resources下的propertiesy文件夹下

[html]view plaincopy

jdbc_driverClassName=com.mysql.jdbc.Driver

jdbc_url=jdbc:mysql://localhost:3306/learning

jdbc_username=root

jdbc_password=christmas258@

(3)Spring配置

这是最重要的:application.xml内容如下

[html]view plaincopy


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd">


classpath:properties/*.properties



class="org.springframework.jdbc.datasource.DriverManagerDataSource">



-->


${jdbc_driverClassName}

${jdbc_url}

${jdbc_username}

${jdbc_password}


value="com.lin.dao"/>



/>-->


(4)日志打印log4j.properties

就放在src/main/resources

[html]view plaincopy

log4j.rootLogger=DEBUG,Console,Stdout

#Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

log4j.appender.Stdout=org.apache.log4j.DailyRollingFileAppender

log4j.appender.Stdout.File=E://logs/log.log

log4j.appender.Stdout.Append=true

log4j.appender.Stdout.Threshold=DEBUG

log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.Stdout.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

四、单元测试

上面的配置完好,接下来就是测验成功

整个目录 如下:

(1)测试基类

[java]view plaincopy

packagecom.lin.baseTest;

importorg.junit.runner.RunWith;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.test.context.ContextConfiguration;

importorg.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;

importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**

* 功能概要:

*

* @author linbingwen

* @since  2015年9月28日

*/

//指定bean注入的配置文件

@ContextConfiguration(locations = {"classpath:application.xml"})

//使用标准的JUnit @RunWith注释来告诉JUnit使用Spring TestRunner

@RunWith(SpringJUnit4ClassRunner.class)

publicabstractclassSpringTestCaseextendsAbstractJUnit4SpringContextTests{

protectedLogger logger = LoggerFactory.getLogger(getClass());

}

(2)测试类

[java]view plaincopy

packagecom.lin.service;

importorg.apache.log4j.Logger;

importorg.junit.Test;

importorg.springframework.beans.factory.annotation.Autowired;

importcom.lin.baseTest.SpringTestCase;

importcom.lin.domain.User;

/**

* 功能概要:UserService单元测试

*

* @author linbingwen

* @since  2015年9月28日

*/

publicclassUserServiceTestextendsSpringTestCase {

@Autowired

privateUserService userService;

Logger logger = Logger.getLogger(UserServiceTest.class);

@Test

publicvoidselectUserByIdTest(){

User user = userService.selectUserById(10);

logger.debug("查找结果"+ user);

}

}

选中selectUserByIdTest,然后右键如下运行

输出结果:

重要打印的结果

这里

[plain]view plaincopy

2015-09-28 15:20:15,129 [main] DEBUG [com.lin.dao.UserDao.selectUserById] - ==>  Preparing: SELECT * FROM t_user WHERE USER_ID = ?

2015-09-28 15:20:15,160 [main] DEBUG [com.lin.dao.UserDao.selectUserById] - ==> Parameters: 10(Integer)

2015-09-28 15:20:15,160 [main] DEBUG [org.mybatis.spring.SqlSessionUtils] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6b64bff9]

2015-09-28 15:20:15,160 [main] DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - Returning JDBC Connection to DataSource

2015-09-28 15:20:15,160 [main] DEBUG [com.lin.service.UserServiceTest] - 查找结果User [userId=10, userName=apple, userPassword=uih6, userEmail=ff@qq.com]

数据库:

程序成功运行,并且结果正确!

到这里配置好spring+mybatis+mysql!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

=====================================================

这里开始添加spirngMVC,并转换maven工程为web项目

五、转换web工程

接上面的工程接着说,此时要加spingMVC之前,工程得再稍微转换下

此时webapp下的结果还没有显示出来,因为此时我们还没有配置此的项目为web项目

再次进去Properties配置,如下图所示:如果没有显示如下,那就先把dynamic web module的√给去掉,然后重新再打开 这个

进入,然后输入如下内容

确定OK之后,webapp下面就会自动生成一些文件,如下

六、配置SpringMVC

(1)修改POM文件,增加了一此内容,新的POM文件如下:

[html]view plaincopy

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.lin

ssm_project

0.0.1-SNAPSHOT

war


3.2.8.RELEASE


1.6.6

1.2.12


4.10


3.2.1


org.springframework

spring-core

${spring.version}

org.springframework

spring-webmvc

${spring.version}

org.springframework

spring-context

${spring.version}

org.springframework

spring-context-support

${spring.version}

org.springframework

spring-aop

${spring.version}

org.springframework

spring-aspects

${spring.version}

org.springframework

spring-tx

${spring.version}

org.springframework

spring-jdbc

${spring.version}

org.springframework

spring-web

${spring.version}


junit

junit

${junit.version}

test



log4j

log4j

${log4j.version}

org.slf4j

slf4j-api

${slf4j.version}

org.slf4j

slf4j-log4j12

${slf4j.version}



org.springframework

spring-test

${spring.version}

test


org.mybatis

mybatis

${mybatis.version}


org.mybatis

mybatis-spring

1.2.0


mysql

mysql-connector-java

5.1.29


javax

javaee-api

6.0

provided


javax

javaee-web-api

6.0

provided

其实也就增加了下面两个

[html]view plaincopy


javax

javaee-api

6.0

provided


javax

javaee-web-api

6.0

provided

(2) 在src/main/resource中添加springmvc文件夹,然后添加文件spring-mvc.xml,内容如下:

[html]view plaincopy


xmlns:p="http://www.springframework.org/schema/p"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.2.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">



p:prefix="/WEB-INF/view/"p:suffix=".jsp"/>

(3)配置web,xml

目录如下 :

这里是关键,web.xml是用来起动sping、spingMVC

放在src/main/webapp/WEB-INF下。内容如下:

[html]view plaincopy


xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="WebApp_ID"version="2.5">

Archetype Created Web Application


index.jsp


contextConfigLocation

classpath:application.xml


webAppRootKey

springmvc.root


SpringEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

SpringEncodingFilter

/*



log4jConfigLocation

classpath:log4j.properties


log4jRefreshInterval

6000

org.springframework.web.util.Log4jConfigListener

org.springframework.web.context.ContextLoaderListener


dispatcherServlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation


classpath:springmvc/spring-mvc.xml

1


dispatcherServlet

/



404

/WEB-INF/errorpage/404.jsp


405

/WEB-INF/errorpage/405.jsp


500

/WEB-INF/errorpage/500.jsp

(4)添加index.jsp

在src/main/webapp/WEB-INF下新建一个文件夹view,添加一个index.jsp,内容如下:

[html]view plaincopy

<%@ pagelanguage="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>

Hello World!

${user.userId}

${user.userName}

${user.userPassword}

${user.userEmail}

(5)最后就是controller的书写了

在src/main/java下新建一个包com.lin.controller.然后新建一个类UserController.java,其内容如下:

[java]view plaincopy

packagecom.lin.controller;

importjavax.annotation.Resource;

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.servlet.ModelAndView;

importcom.lin.domain.User;

importcom.lin.service.UserService;

/**

* 功能概要:UserController

*

* @author linbingwen

* @since  2015年9月28日

*/

@Controller

publicclassUserController {

@Resource

privateUserService userService;

@RequestMapping("/")

publicModelAndView getIndex(){

ModelAndView mav =newModelAndView("index");

User user = userService.selectUserById(1);

mav.addObject("user", user);

returnmav;

}

}

(6)最后的运行!

最后,就是成果了,已经全部都配置好了。我们可以开始以web工程运行了!

然后一路next

接下来控制台就会打印日志出来了!如下

打印浏览器,输入网址:http://localhost:8088/ssm_project/

本文工程免费下载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容