ssh ssm都有事务管理service层通过applicationContext.xml配置,所有service方法都加上事务操作;
用来保证一致性,即service方法里的多个dao操作,要么同时成功,要么同时失败;
springboot下的话,在service方法上加上@Transactional即可
package com.shyroke.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.shyroke.dao.UserMapper;
import com.shyroke.entity.UserBean;
import com.shyroke.service.UserService;
@Controller
@RequestMapping(value = "/")
public class IndexController {
@Autowired
private UserService userService;
@ResponseBody
@RequestMapping(value="/save")
public String list() {
UserBean user1=new UserBean();
user1.setUserName("user1");
user1.setPassWord("123");
userService.save(user1);
return "index";
}
}
package com.shyroke.service;
import com.shyroke.entity.UserBean;
public interface UserService {
void save(UserBean user1);
}
在下面的代码中,我们对save方法加上了@Transactional注解,表示使用事务,当有异常抛出时,就会自动回滚。
package com.shyroke.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.shyroke.dao.UserMapper;
import com.shyroke.entity.UserBean;
import com.shyroke.service.UserService;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
@Transactional
public void save(UserBean user1) {
userMapper.save(user1);
boolean flag = true;
if (flag) {
throw new RuntimeException();
}
}
}
package com.shyroke.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import com.shyroke.entity.UserBean;
public interface UserMapper extends JpaRepository
}
数据库没有数据,说明已经被回滚了。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章