搭建环境
创建数据库和表
创建test数据库,建立一张账户表并插入3条数据记录
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
money DOUBLE
);
INSERT INTO account(NAME,money) VALUES('kobe',1000),('james',2000),('davis',3000);
创建maven工程
新建一个maven工程
在最后一步点击+号添加archetypeCatalog internal属性键值对,可以提高项目创建速度。
创建完成后,修改pom.xml文件,首先将编译版本改为1.8
之后导入相关依赖
junit
junit
4.12
test
org.aspectj
aspectjweaver
1.9.4
org.springframework
spring-aop
5.2.1.RELEASE
org.springframework
spring-context
5.2.1.RELEASE
org.springframework
spring-web
5.2.1.RELEASE
org.springframework
spring-webmvc
5.2.1.RELEASE
org.springframework
spring-test
5.2.1.RELEASE
org.springframework
spring-tx
5.2.1.RELEASE
org.springframework
spring-jdbc
5.2.1.RELEASE
mysql
mysql-connector-java
5.1.44
javax.servlet
servlet-api
2.5
provided
javax.servlet.jsp
jsp-api
2.0
provided
jstl
jstl
1.2
log4j
log4j
1.2.17
org.slf4j
slf4j-api
1.7.5
org.slf4j
slf4j-log4j12
1.6.6
org.mybatis
mybatis
3.4.5
org.mybatis
mybatis-spring
1.3.0
c3p0
c3p0
0.9.1.2
jar
compile
com.alibaba
druid
1.0.9
之后在main文件夹下创建目录用来保存源代码和配置文件
创建和数据库account表对应的实体类Account
public class Account implements Serializable {
private Integer id;
private String name;
private Double money;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
@Override
public String toString() {
return "Account{" +
"id=" + id +
", name='" + name + '\'' +
", money=" + money +
'}';
}
}
在resources目录下导入log4j配置文件
log4j.appender.std=org.apache.log4j.ConsoleAppender
log4j.appender.std.Target=System.err
log4j.appender.std.layout=org.apache.log4j.PatternLayout
log4j.appender.std.Conversion=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.Conversion=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug,std,file
整合SpringMVC
1 创建web控制器
AccountController类:
@Controller
@RequestMapping("/account")
public class AccountController {
@RequestMapping("/findAll")
public String findAll(){
return "success";
}
}
2 配置mvc
先在webapp目录下创建css/img/js文件夹存放静态资源,在WEB-INF下新建pages文件夹存放jsp页面
在resources目录下创建mvc配置文件spring-mvc.xml
spring-mvc.xml:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
3 配置web.xml
/p>
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
ssm
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
dispatcherServlet
/
index.jsp
4 测试
在pages文件夹下新建success.jsp
Title启动成功
修改index.jsp
整合ssm
配置tomcat服务器
启动测试
点击test
优化SpringMVC整合(注入业务层)
1 创建service接口和实现类
接口:
public interface AccountService {
//查询所有账户
List findAll();
}
实现类:
@Service("accountService")
public class AccountServiceImpl implements AccountService {
@Override
public List findAll() {
System.out.println("accountService");
return null;
}
}
2 在控制器中注入service
使用@Autowired注解:
@Controller
@RequestMapping("/account")
public class AccountController {
@Autowired
private AccountService accountService;
@RequestMapping("/findAll")
public String findAll(){
accountService.findAll();
System.out.println("accountController");
return "success";
}
}
3 测试
成功调用了service层
整合Mybatis
1 创建dao接口
不需要具体实现类(由mybatis实现)
@Repository("accountDao")
public interface AccountDao {
//查询全部账户
@Select("select * from account")
List findAll();
}
2 配置mybatis
在resources目录下新建mybatis配置文件sqlMapConfig.xml
3 测试
新建test-java目录,并标记为测试目录
新建一个测试类
public class MybatisTest {
@Test
public void testFindAll(){
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(MybatisTest.class.getClassLoader().
getResourceAsStream("sqlMapConfig.xml"));
SqlSession sqlSession = factory.openSession();
AccountDao accountDao = sqlSession.getMapper(AccountDao.class);
List accounts = accountDao.findAll();
System.out.println(accounts);
}
}
进行测试:
优化mybatis整合
1 存在的问题
连接池是mybatis自带的 =>通过spring管理连接池
sqlSessionFactory还是自己创建的 =>通过spring管理factory
dao包扫描还是由mybatis加载的 =>通过spring扫描包
事务还是由mybatis管理的 =>通过spring管理事务
2 创建spring配置文件
在resources目录下新建springconfig文件spring-service.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
3 在web.xml中配置
将初始化加载的配置文件改为spring*,可以匹配spring-mvc.xml和spring-service.xml
整合结果
查询账户
修改accountServiceImpl
@Service("accountService")
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
@Override
public List findAll() {
List accounts = accountDao.findAll();
return accounts;
}
}
修改accountController
@Controller
@RequestMapping("/account")
public class AccountController {
@Autowired
private AccountService accountService;
@RequestMapping("/findAll")
public String findAll(){
List accounts = accountService.findAll();
request.setAttribute("accounts",accounts);
return "success";
}
}
启动服务器,进行测试
添加账户
修改dao接口,增加添加账户的接口
使用#{属性名}获取对应的属性值
//添加账户
@Insert("insert into account(name,money) values (#{name},#{money})")
void add(Account account);
修改service接口和实现类
//增加账户
void add(Account account);
@Override
public void add(Account account) {
accountDao.add(account);
}
修改控制器
@RequestMapping("/add")
public String add(Account account){
accountService.add(account);
return "add";
}
添加add.jsp
Title添加成功
修改index.jsp
整合ssm
name:
money:
启动服务器,填写表单,点击add account按钮。
添加成功后,返回上一步,再次查询
SSM整合小结
Controller
创建controller,定义方法,添加注解
创建spring-mvc.xml
- 开启包扫描
- 注册视图解析器
- 忽略静态资源
- 配置注解驱动
配置web.xml
- 配置前端控制器
- 配置编码过滤器
注入service
Service
创建service接口,实现类,注册(xml或注解)
创建spring-service.xml
注入数据源
配置事务管理器和事务
配置aop
注入dao
Dao
创建dao接口,定义方法,添加注解
注册数据源(4个基本项)
注册sqlSesisonFactory
开启dao包扫描(MapperScannerConfigurer)
项目整体结构