环境搭建是最基础的,但是发现平时很多时候大家都是ctrl c+ctrl v,这样对于很多细节完全不清楚,来,一起深入了解下
一、准备工作
首先得准备好maven、mysql啥的,这些略。。。
并且mysql中新建表,脚本如下:
db脚本:
CREATE TABLE`t_user` (
`USER_ID` int(11) NOT NULLAUTO_INCREMENT,
`USER_NAME` char(30) NOT NULL,
`USER_PASSWORD`char(10) NOT NULL,
`USER_EMAIL`char(30) NOT NULL,PRIMARY KEY (`USER_ID`),KEY `IDX_NAME` (`USER_NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
dml脚本:
INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (1, '林炳文', '1234567@', 'ling20081005@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (2, 'evan', '123', 'fff@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (3, 'kaka', 'cadg', 'fwsfg@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (4, 'simle', 'cscs', 'fsaf@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (5, 'arthur', 'csas', 'fsaff@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (6, '小德', 'yuh78', 'fdfas@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (7, '小小', 'cvff', 'fsaf@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (8, '林林之家', 'gvv', 'lin@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (9, '林炳文Evankaka', 'dfsc', 'ling2008@126.com');INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD, USER_EMAIL) VALUES (10, 'apple', 'uih6', 'ff@qq.com');
二、创建maven项目
有关maven基础有疑问的,移步:maven菜鸟教程
注意:需要先配置下maven的本地仓库地址,默认为${user.home}/.m2/repository,修改方法为首先找到maven安装目录/conf/settings,改变的值,然后window-->preference-->maven-->User Settings选中maven安装目录/conf/settings,如下图:
这样maven所下载的jar包全部存放在指定位置,不会默认放在c盘。
前三张图片都是网上盗的,最后一张则是本人项目图片,如下:
注意,创建完项目之后,pom.xml会报错,报错信息为:
报错原因:因为在现在的web项目中,web.xml已经不重要了,但是maven没有跟上这个变化,会提示报错。
解决方法:将红框中的一段加到pom.xml中去,搞定。
最后,需要检查jdk版本,右击项目-->properties-->java compiler
-->java build path
-->project facets
保持jdk版本一致。
三、spring+mybatis整合
1、创建相关包与资源文件
2、pom.xml配置所需依赖
4.0.0
com.ty
ssm_ty
0.0.1-SNAPSHOT
war
org.apache.maven.plugins
maven-war-plugin
2.6
false
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代码
User类:
packagecom.ty.dto;/***@authorTaoyong
* @date 2018年5月20日
* 天下没有难敲的代码!*/
public classUser {privateInteger userId;privateString userName;privateString userPassword;privateString userEmail;publicInteger getUserId() {returnuserId;
}public voidsetUserId(Integer userId) {this.userId =userId;
}publicString getUserName() {returnuserName;
}public voidsetUserName(String userName) {this.userName =userName;
}publicString getUserPassword() {returnuserPassword;
}public voidsetUserPassword(String userPassword) {this.userPassword =userPassword;
}publicString getUserEmail() {returnuserEmail;
}public voidsetUserEmail(String userEmail) {this.userEmail =userEmail;
}
@OverridepublicString toString() {return "User [userId=" + userId + ", userName=" +userName+ ", userPassword=" + userPassword + ", userEmail=" +userEmail+ "]";
}
}
UserDao(接口):
packagecom.ty.dao;importcom.ty.dto.User;/***@authorTaoyong
* @date 2018年5月20日
* 天下没有难敲的代码!*/
public interfaceUserDao {publicUser selectUserById(Integer userId);
}
UserMapper.xml
/p>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT * FROM t_user WHERE USER_ID = #{userId}
UserService(接口)
packagecom.ty.service;importcom.ty.dto.User;/***@authorTaoyong
* @date 2018年5月20日
* 天下没有难敲的代码!*/
public interfaceUserService {publicUser selectUserById(Integer userId);
}
UserServiceImpl
packagecom.ty.service.impl;importorg.springframework.beans.factory.annotation.Autowired;importcom.ty.dao.UserDao;importcom.ty.dto.User;importcom.ty.service.UserService;/***@authorTaoyong
* @date 2018年5月20日
* 天下没有难敲的代码!*/@Service
public class UserServiceImpl implementsUserService {
@AutowiredprivateUserDao userDao;publicUser selectUserById(Integer userId) {returnuserDao.selectUserById(userId);
}
}
四、资源配置
1、mybatis-config.xml
/p>
"http://mybatis.org/dtd/mybatis-3-config.dtd">
2、jdbc.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mysql
username=taoyong
password=123456
3、application.xml
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
${driverClassName}
${url}
${username}
${password}
4、配置log4j.properties
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、测试基类SpringBaseTest(负责spring与junit的整合,加载application.xml资源文件)
packagecom.ty.baseTest;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;importcom.ty.service.UserService;/***@authorTaoyong
* @date 2018年5月20日
* 天下没有难敲的代码!*/
//spring整合junit引入配置文件,classpath就是指编译后classes所存放的路径。
@ContextConfiguration(locations = { "classpath:application.xml"})//使用标准的JUnit @RunWith注释来告诉JUnit使用Spring TestRunner
@RunWith(SpringJUnit4ClassRunner.class)public class SpringBaseTest extendsAbstractJUnit4SpringContextTests {//使用slf4j在代码中打印日志
protected Logger logger =LoggerFactory.getLogger(getClass());//测试spring环境是否正常启动
@SuppressWarnings("resource")
@Testpublic voidtestEnv() {
ApplicationContext applicationContext= new ClassPathXmlApplicationContext("classpath:application.xml");
UserService userService= (UserService) applicationContext.getBean("user.service.default");
logger.debug(userService.toString());
}
}
2、UserServiceTest
packagecom.ty.service;importorg.junit.Test;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Autowired;importcom.ty.baseTest.SpringBaseTest;importcom.ty.dto.User;/***@authorTaoyong
* @date 2018年5月20日
* 天下没有难敲的代码!*/
public class UserServiceTest extendsSpringBaseTest {
@AutowiredprivateUserService userService;
Logger logger= LoggerFactory.getLogger(UserServiceTest.class);
@Testpublic voidtestSelectUserById(){
User user= userService.selectUserById(10);
logger.debug("查找结果" +user);
}
}
这地方查询的时候报错,报错信息如下:
原因:mysql驱动包的版本低了,使用的是mysql-connector-Java-5.1.29.jar,更改为mysql-connector-Java-5.1.32.jar即可。
3、测试结果
这样spring+mybatis的整合就完了,下面一篇接着把springMVC整合进来