18.1 实现步骤
●第一步:准备数据库表
○使用t_act表(账户表)
●第二步:IDEA中创建一个模块,并引入依赖
○spring-context
○spring-jdbc
○mysql驱动
○mybatis
○mybatis-spring:mybatis提供的与spring框架集成的依赖
○德鲁伊连接池
○junit
●第三步:基于三层架构实现,所以提前创建好所有的包
○com.powernode.bank.mapper
○com.powernode.bank.service
○com.powernode.bank.service.impl
○com.powernode.bank.pojo
●第四步:编写pojo
○Account,属性私有化,提供公开的setter getter和toString。
●第五步:编写mapper接口
○AccountMapper接口,定义方法
●第六步:编写mapper配置文件
○在配置文件中配置命名空间,以及每一个方法对应的sql。
●第七步:编写service接口和service接口实现类
○AccountService
○AccountServiceImpl
●第八步:编写jdbc.properties配置文件
○数据库连接池相关信息
●第九步:编写mybatis-config.xml配置文件
○该文件可以没有,大部分的配置可以转移到spring配置文件中。
○如果遇到mybatis相关的系统级配置,还是需要这个文件。
●第十步:编写spring.xml配置文件
○组件扫描
○引入外部的属性文件
○数据源
○SqlSessionFactoryBean配置
■注入mybatis核心配置文件路径
■指定别名包
■注入数据源
○Mapper扫描配置器
■指定扫描的包
○事务管理器DataSourceTransactionManager
■注入数据源
○启用事务注解
■注入事务管理器
●第十一步:编写测试程序,并添加事务,进行测试
18.2 具体实现
●第一步:准备数据库表
连接数据库的工具有很多,除了之前我们使用的navicat for mysql之外,也可以使用IDEA工具自带的DataBase插件。可以根据下图提示自行配置:
云
DATABASE
E MAVEN
@LOCALHOST1OF9
SPRING6
DATABASE
TABLES
ACT
TUSER
SERVER OBJECTS
CONSOLE
ACT
G
大人
一54个
2 ROWS
TX
Y WHERE
E`ORDER
BALANCE
ACTNO
50000
ACT-001
ACT-002
●第二步:IDEA中创建一个模块,并引入依赖
●第三步:基于三层架构实现,所以提前创建好所有的包
JAVA
COM.POWERNODE.BANK
MAPPER
POJO
SERVICE.IMPL
RESOURCES
TEST
●第四步:编写pojo
●第五步:编写mapper接口
●第六步:编写mapper配置文件
一定要注意,按照下图提示创建这个目录。注意是斜杠不是点儿。在resources目录下新建。并且要和Mapper接口包对应上。
保存贮
16
SPRING6-015-JUNIT
SPRING6-016-SM
NEW
DIRECTORY
SRC
T
COM/POWERNODE/BANK/MAPPER
MAIN
JAVA
19
COM.POWERNODE.BANK
INS
INT
斜杠
MAPPER
ACCOUNTMAPPER
21
POJO
/大大
22
SERVICE.IMPL
RESOURCES
根据贴
23
TEST
24
*QPAR
POM.XML
如果接口叫做AccountMapper,配置文件必须是AccountMapper.xml
●第七步:编写service接口和service接口实现类
注意编写的service实现类纳入IoC容器管理:
●第八步:编写jdbc.properties配置文件
放在类的根路径下
●第九步:编写mybatis-config.xml配置文件
放在类的根路径下,只开启日志,其他配置到spring.xml中。
●第十步:编写spring.xml配置文件
注意:当你在spring.xml文件中直接写标签内容时,IDEA会自动给你添加命名空间
●第十一步:编写测试程序,并添加事务,进行测试
Java
复制代码
packagecom.powernode.spring6.test;
importcom.powernode.bank.service.AccountService;
importorg.junit.Test;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author 动力节点
* @version 1.0
* @className SMTest
* @since 1.0
**/
publicclassSMTest{
@Test
publicvoidtestSM(){
ApplicationContextapplicationContext=newClassPathXmlApplicationContext("spring.xml");
AccountServiceaccountService=applicationContext.getBean("accountService",AccountService.class);
try{
accountService.transfer("act-001","act-002", 10000.0);
System.out.println("转账成功");
}catch(Exceptione){
e.printStackTrace();
System.out.println("转账失败");
}
}
}
最后大家别忘了测试事务!!!!
18.3 spring配置文件的import
spring配置文件有多个,并且可以在spring的核心配置文件中使用import进行引入,我们可以将组件扫描单独定义到一个配置文件中,如下:
common.xml
XML
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd">
<!--组件扫描-->
<context:component-scanbase-package="com.powernode.bank"/>
</beans>
然后在核心配置文件中引入:
spring.xml
XML
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd">
<!--引入其他的spring配置文件-->
<importresource="common.xml"/>
</beans>
注意:在实际开发中,service单独配置到一个文件中,dao单独配置到一个文件中,然后在核心配置文件中引入,养成好习惯。