package org.easyframe.tutorial.lessonb;
import java.sql.SQLException;
import jef.database.SqlTemplate;
import jef.tools.DateUtils;
import org.easyframe.enterprise.spring.CommonDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public class JTATestService {
@Autowired
private CommonDao dao;
/**
* 成功的事务
* @throws SQLException
*/
public void success1(){
SqlTemplate ds1=dao.getSession().getSqlTemplate("ds1");
SqlTemplate ds2=dao.getSession().getSqlTemplate("ds2");
try{
Integer val=ds1.loadBySql("select max(id) from foo2", Integer.class);
ds1.executeSql("insert into foo2 (id,name,created) values(?,?,?)", val==null?1:val+1,"卡卡西",DateUtils.sqlToday());
ds2.executeSql("insert into Student(id,name) values(default,?)", "陆逊");
}catch(SQLException e){
throw new RuntimeException(e);
}
}
public void failure1(){
SqlTemplate ds1=dao.getSession().getSqlTemplate("ds1");
SqlTemplate ds2=dao.getSession().getSqlTemplate("ds2");
try{
Integer val=ds1.loadBySql("select max(id) from foo2", Integer.class);
ds1.executeSql("insert into foo2 (id,name,created) values(?,?,?)", val==null?1:val,"卡卡西",DateUtils.sqlToday());
ds2.executeSql("insert into Student(id,name) values(default,?)", "陆逊");
}catch(SQLException e){
throw new RuntimeException(e);
}
}
public void failure2(){
SqlTemplate ds1=dao.getSession().getSqlTemplate("ds1");
SqlTemplate ds2=dao.getSession().getSqlTemplate("ds2");
try{
Integer val=ds1.loadBySql("select max(id) from foo2", Integer.class);
ds1.executeSql("insert into foo2 (id,name,created) values(?,?,?)", val==null?1:val+1,"卡卡西",DateUtils.sqlToday());
ds2.executeSql("insert into Student(id,name) values(error,?)", "陆逊");
}catch(SQLException e){
throw new RuntimeException(e);
}
}
public void failure3(){
SqlTemplate ds1=dao.getSession().getSqlTemplate("ds1");
SqlTemplate ds2=dao.getSession().getSqlTemplate("ds2");
try{
Integer val=ds1.loadBySql("select max(id) from foo2", Integer.class);
ds1.executeSql("insert into foo2 (id,name,created) values(?,?,?)", val==null?1:val+1,"卡卡西",DateUtils.sqlToday());
ds2.executeSql("insert into Student(id,name) values(default,?)", "陆逊");
}catch(SQLException e){
throw new RuntimeException(e);
}
throw new NullPointerException();
}
}