1.引入依赖
spring mbatis mysql mybatis-spring druid
2.建表
3.实体类
4.DAO接口
5.mapper配置文件
6.Service接口
7.Service实现类
8.编写SM整合配置文件spring.xml
a.创建数据源对象
<!--创建DataSource-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/2001?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
b.创建sqlSessionFactory对象
<!--创建sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--依赖数据源-->
<property name="dataSource" ref="dataSource"/>
<!--注入mapper文件通用方式-->
<property name="mapperLocations" value="classpath:com/baizhi/mapper/*.xml"/>
<!--注入别名相关配置 typeAliasesPackage:用来给指定包中所有类起别名 默认的别名: 类名|类名首字母小写-->
<property name="typeAliasesPackage" value="com.baizhi.entity"/>
</bean>
c.创建DAO对象
<!--一次项目创建项目中所有DAO对象 MapperScannerConfigurer
MapperScannerConfigurer:
默认创建对象在工厂中唯一标识: 接口的首字母小写
UserDAO=====> userDAO Userdao====> userdao
OrderDAO====> orderDAO Orderdao====> orderdao
EmpDAO ===> empDAO
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--注入sqlSessionFactory-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!--扫描DAO接口所在包-->
<property name="basePackage" value="com.baizhi.dao"/>
</bean>
d.创建事务管理器
<!--数据源事务管理-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--注入数据源对象-->
<property name="dataSource" ref="dataSource"/>
</bean>
e.根据事务管理器创建事务环绕通知 tx:advice
<!--tx:advice标签
id: 基于事务管理器创建的环绕通知对象在工厂中唯一标识
作用:
1.根据指定的事务管理器在工厂中创建一个事务的环绕通知对象
2.对业务层方法进行细粒度事务控制
-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!--事务细粒度配置-->
<tx:attributes>
<tx:method name="save*"/>
<tx:method name="add*"/>
<tx:method name="insert*"/>
<tx:method name="delete*"/>
<tx:method name="update*"/>
</tx:attributes>
</tx:advice>
f.配置事务切面
<!--配置事务切面-->
<aop:config>
<aop:pointcut id="pc" expression="within(com.baizhi.service.*ServiceImpl)"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
</aop:config>
9.启动工厂测试Service对象
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserService userService = (UserService) context.getBean("userService");
userService.xx;