spring配置声明式事务管理控制jdbc,事务提交后数据库中无数据。源码如下:
xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
<property name="defaultAutoCommit">
<value>false</value>
</property>
</bean>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="user" class="com.shengming.transaction.UserDAOImp">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="insert*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="ServiceOperation" expression="execution(* com.shengming.transaction.IUserDAO.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="ServiceOperation"/>
</aop:config>
</beans>
IUserDAO.javapackage com.shengming.transaction;public interface IUserDAO {
public void insertUser();
}
UserDAOImp.java文件
package com.shengming.transaction;import org.springframework.jdbc.core.support.JdbcDaoSupport;public class UserDAOImp extends JdbcDaoSupport implements IUserDAO{
public void insertUser() {
getJdbcTemplate().update("insert into newuser(id,name) values(2,'man')");
}
}
Client.java文件package com.shengming.transaction;import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;public class Client {
public static void main(String[] args) {
Resource resouce = new ClassPathResource("content.xml");
XmlBeanFactory bean = new XmlBeanFactory(resouce);
IUserDAO userdao = (IUserDAO)bean.getBean("user");
userdao.insertUser();
}
}
表结构:+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
执行Client中userdao.insertUser()插入一条新数据时没有显示异常但是数据库中无数据插入这是怎么回事?
xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
<property name="defaultAutoCommit">
<value>false</value>
</property>
</bean>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="user" class="com.shengming.transaction.UserDAOImp">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="insert*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="ServiceOperation" expression="execution(* com.shengming.transaction.IUserDAO.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="ServiceOperation"/>
</aop:config>
</beans>
IUserDAO.javapackage com.shengming.transaction;public interface IUserDAO {
public void insertUser();
}
UserDAOImp.java文件
package com.shengming.transaction;import org.springframework.jdbc.core.support.JdbcDaoSupport;public class UserDAOImp extends JdbcDaoSupport implements IUserDAO{
public void insertUser() {
getJdbcTemplate().update("insert into newuser(id,name) values(2,'man')");
}
}
Client.java文件package com.shengming.transaction;import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;public class Client {
public static void main(String[] args) {
Resource resouce = new ClassPathResource("content.xml");
XmlBeanFactory bean = new XmlBeanFactory(resouce);
IUserDAO userdao = (IUserDAO)bean.getBean("user");
userdao.insertUser();
}
}
表结构:+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
执行Client中userdao.insertUser()插入一条新数据时没有显示异常但是数据库中无数据插入这是怎么回事?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货