1.配置事务管理器
<!-- 设定transactionManager事务管理器 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 启动spring注解功能,需要cglib-nodep-x.x_x.jar支持 -->
<tx:annotation-driven transaction-manager="txManager" />
2.Service层实现类
@Service("partsMgrService")
@Transactional
public class PartsMgrServiceImpl implements PartsMgrService {
Logger log = Logger.getLogger(PartsMgrServiceImpl.class); @Autowired
PartsTypeDAO partsTypeDao;
@Autowired
PartsBrandDAO partsBrandDao;
//省略代码
@Override
public boolean addPartsType(PartsTypeDTO dto) throws Exception{
//赋予值
Map map = new HashMap();
map.put("typeName", dto.getTypeName());
map.put("fParentId", dto.getPid());
map.put("typeCode", dto.getTypeCode());
map.put("describe", dto.getDescribe());
map.put("flag", dto.getFlag());
map.put("sortNum", dto.getSortNum());
map.put("typeFlag", dto.getTypeFlag());
//测试事务
// Map map2 = new HashMap();
// map2.put("fPartstypeId", 16);
// map2.put("brandName", "aaa334");
// map2.put("brandCode", "bbb234");
// map2.put("describe", "ccc");
// map2.put("brandLoge", "ddd");
// log.info("添加品牌参数: " + map2);
//
// partsBrandDao.addPartsBrand(map2);
partsTypeDao.addPartsType(map);
return true;
}
}
@Transactional注解标签~!!
3.Dao层实现类
public interface PartsTypeDAO {
//需要抛出异常DataAccessException
public boolean addPartsType(Map<String, Object> map) throws DataAccessException; }
如果在Dao层实现类中try{}catch(Exception e){}已经处理异常,那么事务是没有效果的~!
事务是在Service业务逻辑层处理的,只针对Dao层,所以Action层不能够直接去调Dao代码的原因呢,这也是代码分层体系编写的原因。