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
控制台
表现层:查询所有用户信息
业务层:添加用户
表现层:查询所有用户信息
业务层:查询所有用户