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";
}
}