一、准备工作
1. 首先创建一个表:
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=InnoDBAUTO_INCREMENT=11DEFAULTCHARSET=utf8
随便插入一些数据:
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(1,'林炳文','1234567@','ling1005@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(2,'evan','123','fff@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(3,'kaka','cadg','fwsfg@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(4,'simle','cscs','fsaf@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(5,'arthur','csas','fsaff@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(6,'小德','yuh78','fdfas@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(7,'小小','cvff','fsaf@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(8,'林林之家','gvv','lin@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(9,'林炳文Evankaka','dfsc','ling@');
INSERTINTOt_user(USER_ID,USER_NAME,USER_PASSWORD,USER_EMAIL)VALUES(10,'apple','uih6','ff@');
二、工程创建
1、Maven工程创建
(1)新建
(2)选择快速框架
(3)输出项目名,包,记得选war(表示web项目,以后可以spingMVC连起来用)
(4)创建好之后
目录如下:
(5)检查下
这三个地方JDK的版本一定要一样!!!!
三、sping+mybatis配置
1、整个工程目录如下:
2、POM文件
xsi:schemaLocation="/POM/4.0.0/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
packagecom.lin.domain;
/**
*User映射类
*
*@authorlinbingwen
*@time.5.15
*/
publicclassUser{
privateIntegeruserId;
privateStringuserName;
privateStringuserPassword;
privateStringuserEmail;
publicIntegergetUserId(){
returnuserId;
}
publicvoidsetUserId(IntegeruserId){
this.userId=userId;
}
publicStringgetUserName(){
returnuserName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
publicStringgetUserPassword(){
returnuserPassword;
}
publicvoidsetUserPassword(StringuserPassword){
this.userPassword=userPassword;
}
publicStringgetUserEmail(){
returnuserEmail;
}
publicvoidsetUserEmail(StringuserEmail){
this.userEmail=userEmail;
}
@Override
publicStringtoString(){
return"User[userId="+userId+",userName="+userName
+",userPassword="+userPassword+",userEmail="+userEmail
+"]";
}
}
(2)UserDao.java
Dao接口类,用来对应mapper文件。放在src/main/java下的包com.lin.dao,内容如下:
packagecom.lin.dao;
importcom.lin.domain.User;
/**
*功能概要:User的DAO类
*
*@authorlinbingwen
*@since9月28日
*/
publicinterfaceUserDao{
/**
*
*@authorlinbingwen
*@since9月28日
*@paramuserId
*@return
*/
publicUserselectUserById(IntegeruserId);
}
(2)UserService.java和UserServiceImpl.java
service接口类和实现类,放在src/main/java下的包com.lin.service,内容如下:
UserService.java
packagecom.lin.service;
importorg.springframework.stereotype.Service;
importcom.lin.domain.User;
/**
*功能概要:UserService接口类
*
*@authorlinbingwen
*@since9月28日
*/
publicinterfaceUserService{
UserselectUserById(IntegeruserId);
}
UserServiceImpl.java
packagecom.lin.service;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;
importcom.lin.dao.UserDao;
importcom.lin.domain.User;
/**
*功能概要:UserService实现类
*
*@authorlinbingwen
*@since9月28日
*/
@Service
publicclassUserServiceImplimplementsUserService{
@Autowired
privateUserDaouserDao;
publicUserselectUserById(IntegeruserId){
returnuserDao.selectUserById(userId);
}
}
(4)mapper文件
用来和dao文件对应,放在src/main/java下的com.lin.mapper包下
mapperPUBLIC"-////DTDMapper3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
SELECT*FROMt_userWHEREUSER_ID=#{userId}
4、资源配置-------src/main/resources
目录如下:
(1)mybatis配置文件
这里没有什么内容,因为都被放到application.xml中去了,放在src/main/resources下的mybatis文件夹下
mybatis-config.xml内容如下:
configurationPUBLIC"-////DTDConfig3.0//EN"
"/dtd/mybatis-3-config.dtd">
(2)数据源配置jdbc.properties
放在src/main/resources下的propertiesy文件夹下
jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/learning
jdbc_username=root
jdbc_password=christmas258@
(3)Spring配置
这是最重要的:application.xml内容如下
xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"
xmlns:aop="/schema/aop"
xsi:schemaLocation="
/schema/beans
/schema/beans/spring-beans-3.0.xsd
/schema/aop
/schema/aop/spring-aop-3.0.xsd
/schema/context
/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
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
.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-ddHH:mm:ss}[%t:%r]-[%p]%m%n
四、单元测试
上面的配置完好,接下来就是测验成功
整个目录 如下:
(1)测试基类
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;
/**
*功能概要:
*
*@authorlinbingwen
*@since9月28日
*/
//指定bean注入的配置文件
@ContextConfiguration(locations={"classpath:application.xml"})
//使用标准的JUnit@RunWith注释来告诉JUnit使用SpringTestRunner
@RunWith(SpringJUnit4ClassRunner.class)
publicabstractclassSpringTestCaseextendsAbstractJUnit4SpringContextTests{
protectedLoggerlogger=LoggerFactory.getLogger(getClass());
}
(2)测试类
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单元测试
*
*@authorlinbingwen
*@since9月28日
*/
publicclassUserServiceTestextendsSpringTestCase{
@Autowired
privateUserServiceuserService;
Loggerlogger=Logger.getLogger(UserServiceTest.class);
@Test
publicvoidselectUserByIdTest(){
Useruser=userService.selectUserById(10);
logger.debug("查找结果"+user);
}
}
选中selectUserByIdTest,然后右键如下运行
输出结果:
重要打印的结果
这里
-09-2815:20:15,129[main]DEBUG[com.lin.dao.UserDao.selectUserById]-==>Preparing:SELECT*FROMt_userWHEREUSER_ID=?
-09-2815:20:15,160[main]DEBUG[com.lin.dao.UserDao.selectUserById]-==>Parameters:10(Integer)
-09-2815:20:15,160[main]DEBUG[org.mybatis.spring.SqlSessionUtils]-ClosingnontransactionalSqlSession[org.apache.ibatis.session.defaults.DefaultSqlSession@6b64bff9]
-09-2815:20:15,160[main]DEBUG[org.springframework.jdbc.datasource.DataSourceUtils]-ReturningJDBCConnectiontoDataSource
-09-2815:20:15,160[main]DEBUG[com.lin.service.UserServiceTest]-查找结果User[userId=10,userName=apple,userPassword=uih6,userEmail=ff@]
数据库:
程序成功运行,并且结果正确!
到这里配置好spring+mybatis+mysql!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
=====================================================
这里开始添加spirngMVC,并转换maven工程为web项目
五、转换web工程
接上面的工程接着说,此时要加spingMVC之前,工程得再稍微转换下
此时webapp下的结果还没有显示出来,因为此时我们还没有配置此的项目为web项目