SSM的集成


一、导入jar包

spring管理mybaitis的jar包官网:http://www.mybatis.org/spring/zh/index.html

maven依赖


		
			org.springframework
			spring-context
			4.3.18.RELEASE
		

		
		
			org.springframework
			spring-webmvc
			4.3.18.RELEASE
		

		
		
			org.springframework
			spring-jdbc
			4.3.18.RELEASE
		

		
		
			org.springframework
			spring-aspects
			4.3.18.RELEASE
		
		
		
		
		    org.aspectj
		    aspectjweaver
		    1.6.12
		
		
			
		   
		    com.fasterxml.jackson.core
		    jackson-databind
		    2.6.0
		

		
		
			org.mybatis
			mybatis-spring
			1.3.2
		

		
		
			org.mybatis
			mybatis
			3.4.6
		

		
		
			mysql
			mysql-connector-java
			5.1.38
		
		
		
		
			javax.servlet
			javax.servlet-api
			3.1.0
			provided
		
		
		
		
			javax.servlet
			jstl
			1.2
		
		
		
		
			commons-fileupload
			commons-fileupload
			1.3.3
		

		
		
			com.alibaba
			druid
			1.1.9
		

		
		
			org.hibernate.validator
			hibernate-validator
			6.1.5.Final
		

		
		
			log4j
			log4j
			1.2.17
		

2、在web.xml启动DispathcherServlet核心处理器


    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        	contextConfigLocation
        	/WEB-INF/classes/springcore.xml
        
        1
    

    
        springmvc
        /
    

3、创建springcore.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>


	
	
	
	

	
	
		
		
		
		
		
		
		
		
	

	
	
				
		
		
		
 		 
		
		
	

	
	
		
	
 	
 	
	
		
		
		
		
		
		
	
	
	
    
        
    
    
    
    
     
    

4、添加druid.properties和log4j配置

druid.properties配置
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://locahost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8
uname=root
password=123456
filters=stat
initialSize=2
maxActive=10
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=select CURRENT_DATE FROM dual
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200
log4j配置
### 设置###
#log4j配置文件中路径配置一般有三种方法: 
#(1)绝对路径法:直接配置为系统觉得路径; 
#(2)相对路径法: 
#log4j.appender.logfile.File=../logs/app.log,将日志记录到tomcat下的logs文件夹; 
#log4j.appender.logfile.File=logs/app.log,将日志记录到tomcat的bin目录下的logs文件夹; 
#(3)使用环境变量相对路径法:程序会优先找jvm环境变量,然后再找系统环境变量,来查找配置文件中的变量。 
#log4j.appender.logfile.File=user.dir/logs/app.log,使用tomcat容器时user.dir/logs/app.log,使用tomcat容器时{user.dir}对应tomcat的bin目录; 
#log4j.appender.logfile.File=user.home/logs/app.log,user.home/logs/app.log,{user.home}对应操作系统当前用户目录; 
#log4j.appender.logfile.File=webApp.root/logs/app.log,webApp.root/logs/app.log,{webApp.root}对应当前应用根目录;

#log4j.rootLogger = debug,stdout,D,E
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = d://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =d://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

5、开始添加dao层代码

@Repository
public interface StudentDao {
	//既可以使用注解、亦可以使用配置两者结合使用
	@Select("select * from student")
	List getAll();
	
	List getAll2();
}

6、创建Dao层对应的Mapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>


	

7、在业务逻辑层添加事物注解

public interface StudentService {
	List getAll();
	
	List getAll2();
	
	int add(Student info);
}


@Service
//事物注解、下面所有方法、只要抛出异常就回滚,否则提交
@Transactional
public class StudentServiceImpl implements StudentService {
	@Autowired
	StudentDao dao;
	public List getAll() {
		return dao.getAll();
	}

	public List getAll2() {
		return dao.getAll2();
	}

	public int add(Student info) {
		//故意抛出一个异常,测试是否能回滚操作
		dao.add(info);
		dao.add(info);
		
		return 0;
	}
}

8、在Controller层调用Dao或者Service

@RestController
@RequestMapping("/student")
public class StudentConroller {
	@Autowired
	StudentService service;
	
	@RequestMapping("/show1")
	public Object show1() {
		return service.getAll();
	}
	
	@RequestMapping("/show2")
	public Object show2() {
		return service.getAll2();
	}
	
	@RequestMapping("/show3")
	public Object show3() {
		Student info=new Student(222, "test", "111", "1", 1, null);
		service.add(info);
		
		return service.getAll2();
	}
	
	@RequestMapping("/test001")
	public Object test001() {
		return "test00111111111111111111";
	}
}