<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>net.sourceforge.jtds.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>baidu</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="userDAO" class="net.xiaxin.dao.UserDAO">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="transactionManager">
<ref local="transactionManager" />
</property>
</bean>
</beans>
配置中包含了三个节点:
Ø dataSource
这里我们采用了apache dhcp组件提供的DataSource实现,并为其配置了JDBC驱动、数据库URL、用户名和密码等参数。
Ø transactionManager
针对JDBC DataSource类型的数据源,我们选用了DataSourceTransactionManager
作为事务管理组件。
如果需要使用基于容器的数据源(JNDI),我们可以采用如下配置:
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/sample</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager"/>
Ø userDAO
申明了一个UserDAO Bean,并为其指定了dataSource和
transactionManger资源。
UserDAO对应的代码如下:
public class UserDAO {
private DataSource dataSource
private PlatformTransactionManager transactionManager
public PlatformTransactionManager getTransactionManager() {
return transactionManager
}
public void setTransactionManager(PlatformTransactionManager
transactionManager) {
this.transactionManager = transactionManager
}
public DataSource executeTestSource() {
return dataSource
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource
}
public void insertUser() {
TransactionTemplate tt =new TransactionTemplate(getTransactionManager())
tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
JdbcTemplate jt = new JdbcTemplate(executeTestSource())
jt.update(
"insert into users (username) values ('xiaxin')")
jt.update(
"insert into users (id,username) values(2,
'erica')")
return null
}
})
}
}
可以看到,在insertUser方法中,我们引入了一个新的模板类:org.springframework.transaction.support.TransactionTemplate。 TransactionTemplate封装了事务管理的功能,包括异常时的事务回滚,以及 *** 作成功后的事务提交。和JdbcTemplate一样,它使得我们无需在琐碎的try/catch/finally代码中徘徊。
在doInTransaction中进行的 *** 作,如果抛出未捕获异常将被自动回滚,如果成功执行,则将被自动提交。
1、创建web 工程springJdbcTemplate
2、添加Spring能力 在此需要将jdbc包也同时加入
3、配置上mysql的连接驱动(拷贝mysql驱动包,如果不拷贝报错很诡异)
在applicationContext.xml中进行配置在beans标签中填写<beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><propertyname="dataSource"><reflocal="dataSource"/></property></bean><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><propertyname="driverClassName"><value>com.mysql.jdbc.Driver<alue></property><propertyname="url"><value>jdbc:mysql://localhost:3306/myspringjdbcdb<alue></property><propertyname="username"><value>root<alue></property><propertyname="password"><value>root<alue></property></bean>4、创建包结构并且写出类(每个类中可以没内容)
5、每个类中的源代码
UserDao.java
UserDaoImp.java
此项写完填写在applicationContext.xml中进行配置在beans标签中填写
User.java
每个成员变量都写上get和set方法并且在此类中还要加入
此项写完填写在applicationContext.xml中进行配置在beans标签中填写
测试类TestAction.java
打印出结果:
出现空指针异常可能有多种原因,以下是几种可能的原因:1.未正确注入JdbcTemplate对象
如果在使用JdbcTemplate时出现空指针异常,可能是因为没有正确注入JdbcTemplate对象。在使用注解配置时,需要确保已经在配置文件中正确地配置了JdbcTemplate,并且已经将其注入到需要使用它的类中。
2.未正确配置数据库连接信息
如果未正确配置数据库连接信息,可能会导致JdbcTemplate对象无法连接到数据库。这可能会导致空指针异常。
3.查询结果为空
如果执行查询 *** 作时返回的结果为空,可能会导致空指针异常。在使用JdbcTemplate时,需要确保查询结果不为空才能安全地使用它。
4.对象未实例化
在使用JdbcTemplate时,可能会出现因为对象未正确实例化而导致的空指针异常。在使用JdbcTemplate之前,确保已经正确地实例化了它。
有帮到你的话望采纳 谢谢~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)