81,091
社区成员
发帖
与我相关
我的任务
分享
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:com/bsss/conf/mybatis.xml"></property>
</bean>
<bean id="userDAO" class="com.bsss.dao.impl.UserDAOImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<!-- 声明式事务配置 -->
<!-- 配置事务管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<!-- 配置哪些方法使用什么样的事务,配置事务的传播特性 -->
<tx:method name="update*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 配置AOP -->
<aop:config>
<aop:pointcut expression="execution(* com.bsss.services.UserServices+.*(..))" id="pointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>
<!-- 声明式事务结束 -->
<!-- mybatis.xml配置 -->
<configuration>
<mappers>
<!-- 实体类映射文件 -->
<mapper resource="com/bsss/entity/UserMapper.xml"/>
</mappers>
</configuration>
<!-- usermapper.xml配置 -->
<mapper namespace="com.bsss.entity.UserMapper">
<resultMap type="com.bsss.entity.User" id="UserResult">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="state" jdbcType="INTEGER" property="state"/>
</resultMap>
<select id="updateUser">
update test set state=#{state} where id=#{id}
</select>
</mapper>
public interface UserServices {
public void updateUser(User user1, User user2);
}
public class UserServicesImpl implements UserServices {
private ApplicationContext ac;
@Override
public void updateUser(User user1, User user2) {
ac = new ClassPathXmlApplicationContext("com/bsss/conf/beans.xml");
UserDAO uld = (UserDAO)ac.getBean("userDAO");
uld.updateUser(user1);
int i = 1 / 0;
uld.updateUser(user2);
}
}
public interface UserDAO {
public int updateUser(User user);
}
public class UserDAOImpl extends SqlSessionDaoSupport implements UserDAO{
@Override
public int updateUser(User user) {
return getSqlSession().update("com.bsss.entity.UserMapper.updateUser", user);
}
}
private int id;
private String name;
private int state;
public class Test {
public static void main(String[] args) {
User user1 = new User();
user1.setId(1);
user1.setState(0);
User user2 = new User();
user2.setId(2);
user2.setState(1);
UserServices uls = new UserServicesImpl();
uls.updateUser(user1, user2);
}
}
<bean id="userServices" class="com.bsss.services.impl.UserServicesImpl"></bean>
测试类改成了
ApplicationContext ac = new ClassPathXmlApplicationContext("com/bsss/conf/beans.xml");
UserServices uls = (UserServices)ac.getBean("userServices");
结果还是那样,user1依然更新了。
是不是我上面的代码写的有错误?
谢谢