Spring 整合 MyBatis
结构目录
java
controller
AccountController.java(表现层) dao
domain
service
AccountService.java(业务层) AccountServiceImp.java (业务层) resources
applicationContext.xml (Spring配置文件)springmvc.xml(SpringMVC配置文件) webapp
WEB-INF
index.jsp (jsp页面文件)
Spring配置文件
开启注解扫描
Spring 整合 MyBatis
配置 连接池(ComboPooledDataSource) 配置 SqlSessionFactoryBean 配置 持久层接口的包 Spring 声明式事务管理
配置 事务管理(DataSourceTransactionManager) 配置 事务通知(tx:advice) 配置 AOP增强(aop:config)
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
< beans xmlns = " http://www.springframework.org/schema/beans"
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"
xmlns: context= " http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd" >
< context: component-scan base-package = " cn.water" >
< context: exclude-filter type = " annotation" expression = " org.springframework.stereotype.Controller" />
</ context: component-scan>
< bean id = " comboPooledDataSource" class = " com.mchange.v2.c3p0.ComboPooledDataSource" >
< property name = " driverClass" value = " com.mysql.jdbc.Driver" > </ property>
< property name = " jdbcUrl" value = " jdbc:mysql:///ssm" > </ property>
< property name = " user" value = " root" > </ property>
< property name = " password" value = " root" > </ property>
</ bean>
< bean id = " sessionFactoryBean" class = " org.mybatis.spring.SqlSessionFactoryBean" >
< property name = " dataSource" ref = " comboPooledDataSource" > </ property>
</ bean>
< bean id = " mapperScannerConfigurer" class = " org.mybatis.spring.mapper.MapperScannerConfigurer" >
< property name = " basePackage" value = " cn.water.dao" > </ property>
</ bean>
< bean id = " dataSourceTransactionManager" class = " org.springframework.jdbc.datasource.DataSourceTransactionManager" >
< property name = " dataSource" ref = " comboPooledDataSource" > </ property>
</ bean>
< tx: advice id = " txAdvice" transaction-manager = " dataSourceTransactionManager" >
< tx: attributes>
< tx: method name = " find*" read-only = " true" />
< tx: method name = " *" isolation = " DEFAULT" />
</ tx: attributes>
</ tx: advice>
< aop: config>
< aop: advisor advice-ref = " txAdvice" pointcut = " execution(* cn.water.service.*SErviceImp.*(..))" />
</ aop: config>
</ beans>
业务层
AccountServiceImp.java
package cn. water. service;
import cn. water. dao. AccountDao;
import cn. water. domain. Account;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. stereotype. Service;
import java. util. List;
@Service ( "accountService" )
public class AccountServiceImp implements AccountService {
@Autowired
private AccountDao dao;
@Override
public List< Account> findAll ( ) {
System. out. println ( "业务层:查询所有用户" ) ;
return dao. findAll ( ) ;
}
@Override
public void addAccount ( Account account) {
System. out. println ( "业务层:添加用户" ) ;
dao. addAccount ( account) ;
}
}
jsp页面
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><a href="accountController/findAll">findAll</a></h3>
<form action="accountController/addAccount" method="post">
姓名:<input type="text" name="name">
金额:<input type="text" name="money">
<input type="submit" value="保存">
</form>
</body>
</html>
jsp页面
list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>用户信息列表</h1>
<h2>${accounts}</h2>
<c:forEach items="${accounts}" var="account">
<h3>${account.id}</h3>
<h3>${account.name}</h3>
<h3>${account.money}</h3> <br>
</c:forEach>
</body>
</html>
运行结果
页面展示
用户信息列表
[Account{id=1, name='cat', money=9.16}, Account{id=2, name='dog', money=11.27}, Account{id=3, name='rat', money=14.87}, Account{id=4, name='water', money=11.11}]
1
cat
9.16
2
dog
11.27
3
rat
14.87
4
water
11.11
控制台
表现层:查询所有用户信息
业务层:添加用户
表现层:查询所有用户信息
业务层:查询所有用户