目录
依赖引入
<!--spring框架依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.8</version>
</dependency>
<!--MySQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<!--mybatis-spring依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!--德鲁伊德连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
<!--测试单元-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
配置spring配置文件
打开组件扫描
<!--打开组件扫描-->
<context:component-scan base-package="com.hyp"></context:component-scan>
- 引入jdbc.properties数据库连接信息文件,
jdbc.properties
<!--引入jdbc.properties-->
<context:property-placeholder location="jdbc.properties"></context:property-placeholder>
配置连接池
<!--配置连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="${prop.url}"></property>
<property name="username" value="${prop.username}"></property>
<property name="password" value="${prop.password}"></property>
<property name="driverClassName" value="${prop.driverClass}"></property>
</bean>
- 在spring中配置SqlSessionFactorBean
<!--配置SqlSessionFactorBean-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!--指定mybatis核心配置文件-->
<property name="configLocation" value="mybatis-config.xml"></property>
<!--设置别名-->
<property name="typeAliasesPackage" value="com.hyp.pojo"></property>
</bean>
配置Mapper扫描器,这个步骤相当于生成Mapper接口实现类的bean交给spring管理
<!--Mapper扫描配置器,主要扫描Mapper接口,生成代理类-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.hyp.Mapper"></property>
</bean>
- 扫描com.hyp.Mapper中的接口,交给spring进行管理
因为使用mybatis开发,Dao层的接口没有实现类,如果想用自动注入
要在serviceImpl类中注入AccountMapper对象
AccountService接口
@Component
public interface AccountService {
/**
* 给account转账
* @param account
* @return
*/
int addMoney(Account account);
/**
* 减钱
* @param account
* @return
*/
int reduceMoney(Account account);
/**
* 转账
* @param sender 发送
* @param receiver 接收
* @return
*/
int transfer(Account sender,Account receiver);
}
我要在是service层调用这里面的方法
serviceImpl
要实现自动注入,就要在spring.xml文件中进行配置,因为它不象其他接口有实现类,如果有细实现类加一个 @Repository
注解就可以自动注入,他没有实现类
- 创建事务管理器
<!--创建事务管理器-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
启用事务注解,添加这个可以使用@Transactional
注解开启事务
<!--启用事务注解-->
<tx:annotation-driven transaction-manager="transactionManager"/>
如:我想将serviceImpl中实现的所有方法都开启注解,就需要在serviceImpl这个类上添加一个@Transactional
注解就可实现
这个注解可以加载类上也可以加载方法上,加在类上相当于给这个类的所有方法都添加事务,加在某一个方法上,就只给这个方法开启事务
配置mybati-config.xml
- 在spring中,mybatis的核心配置文件中的其他配置都在spring中完成
配置AccountMapper.xml文件
测试
测试service中addMoney()
这个方法