IDEA创建一个webapp工程
选择骨架创建
1、Spring整合Mybatis
- 让Spring容器去管理
SqlSessionFactory
对象 - 让Spring容器去创建并管理
Mapper接口代理对象
- 让Mybatis用上Spring的声明式事务
1.1 实现Mybatis的代码
pom.xml文件中导入依赖
org.mybatis
mybatis
3.5.2
mysql
mysql-connector-java
5.1.47
org.slf4j
slf4j-log4j12
1.7.7
log4j
log4j
1.2.17
org.projectlombok
lombok
1.18.22
provided
编写数据库表
创建pojo包、mapper包、mapper.xml文件,可以用mybatis逆向工程
创建jdbc.properties
目录结构:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf8&useUnicode=true
jdbc.username=root
jdbc.password=123456
jdbc.initialSize=5
jdbc.minIdle=5
jdbc.maxActive=20
jdbc.maxWait=60000
创建log4j.properties
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=my.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug, stdout, file
配置mybatis环境 mybatis-config.xml
测试mybatis——》test的java中创建com/lzy/mybatis/test/MybatisTest.java
添加junit测试依赖
junit
junit
4.11
test
MybatisTest.java测试
@Slf4j
public class MybatisTest {
@Test
public void test() throws IOException {
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = factory.openSession();
AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);
Account account = new Account();
account.setAccountNo("10086");
account.setAccountName("小明");
account.setMoney(new BigDecimal(100000));
int i = accountMapper.insert(account);
log.info("{}==>insert account",i);
sqlSession.commit();
sqlSession.close();
}
}
1.2 整合Spring
导入spring依赖
org.springframework
spring-context
5.1.6.RELEASE
org.springframework
spring-jdbc
5.1.6.RELEASE
org.springframework
spring-aop
5.1.6.RELEASE
org.springframework
spring-aspects
5.1.6.RELEASE
org.springframework
spring-test
5.1.6.RELEASE
导入mybatis-spring适配包依赖
org.mybatis
mybatis-spring
2.0.0
- 配置文件 applicationContext-mapper.xml
- 测试
public class SpringTest {
@Test
public void springMybatisTest(){
ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext-mapper.xml");
AccountMapper accountMapper = ioc.getBean("accountMapper", AccountMapper.class);
int row = accountMapper.deleteByPrimaryKey(1);
System.out.println("row = " + row);
}
}
1.3 Spring配置SqlSessionFactory的bean的详细配置
导入分页插件【可选】
com.github.pagehelper
pagehelper
5.1.10
helperDialect=mysql
reasonable=true
1.4 声明式事务
package com.lzy.ssm.service.impl;
import com.lzy.ssm.mapper.AccountMapper;
import com.lzy.ssm.pojo.Account;
import com.lzy.ssm.pojo.AccountExample;
import com.lzy.ssm.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
/**
* 账户业务层实现
*/
@Service
@Transactional //开启读写型事务
public class AccountServiceImpl implements IAccountService {
@Autowired
AccountMapper accountMapper;
@Override
public boolean transfer(String fromNo, String toNo, Double money) {
//业务代码
}
}
2、Spring整合SpringMVC
- Spring有一个容器【dao、service】
- SpringMVC有一个容器【controller】
2.1 父子容器
Spring和SpringMVC的容器具有父子关系
Spring容器为父容器,SpringMVC为子容器
子容器可以引用父容器中的Bean,而父容器不可以引用子容器中的Bean
如果在子容器中找不到bean的时候可以去父容器查找bean。
2.2 容器启动初始化时机
SpringMVC容器:WEB服务器启动时创建
- 因为DispathServlet配置load-on-startup为1
Spring容器:WEB服务器启动时创建,在SpringMVC容器创建之前创建
- 容器应该放在哪个地方最合适
-
放在ServletContext域对象中
-
什么时候放呢?
Spring容器创建完成后,就应该放入到ServletContext域中
ServletContext对象在WEB服务器启动时创建,ServletContextListener可以监听ServletContext对象的创建与销毁
2.3 Spring集成WEB环境
导入SpringMVC依赖
org.springframework
spring-webmvc
5.1.6.RELEASE
com.fasterxml.jackson.core
jackson-databind
2.9.5
javax.servlet
javax.servlet-api
3.0.1
provided
javax.servlet
jsp-api
2.0
provided
jstl
jstl
1.2
- src/main/webapp/WEB-INF/web.xml中配置一个
ContextLoaderListener
监听器即可
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath*:applicationContext-*.xml
2.4 整合SpringMVC
直接使用SpringMVC即可
- springmvc.xml
application/json;charset=UTF-8
text/html;charset=UTF-8
application/json;charset=UTF-8
text/html;charset=UTF-8
- web.xml
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath*:applicationContext-*.xml
DispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
DispatcherServlet
/
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
CharacterEncodingFilter
/*
- AccountController
package com.lzy.ssm.web;
import com.lzy.ssm.service.AccountService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/account")
@Slf4j
public class AccountController {
@Autowired
private IAccountService accountService;
@GetMapping("/test")
@ResponseBody
public String test(){
log.info("{}", accountService);
return "success";
}
}
安装插件
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.8
1.8
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
80
/
UTF-8
tomcat7
其他依赖【可加】
com.github.penggle
kaptcha
2.3.2
javax.servlet
javax.servlet-api
commons-fileupload
commons-fileupload
1.3.3
commons-io
commons-io
2.7
Original: https://www.cnblogs.com/lzy-blogs/p/16353332.html
Author: lzy96158
Title: SSM整合(Spring+SpringMVC+Mybatis)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/588554/
转载文章受原作者版权保护。转载请注明原作者出处!