Spring配置相关问题出错 请帮忙指点一下 谢谢了!

Spring配置相关问题出错 请帮忙指点一下 谢谢了!,第1张

如果DAO继承至HibernateDaoSupport 那么就不能用jdbcTemplate

可以把jdbcTemplate的定义删掉了。即

<bean id="logDao" class="comtestbeansdaoimplDaoLogDAO">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

如果要用jdbcTemplate ,那么你的DAO就得继承至 JdbcDaoSupport。配置按目前的就可以了,sessionFactory也不需要。

<beans>

<bean id="dataSource"

class="orgapachecommonsdbcpBasicDataSource" destroy-method="close">

<property name="driverClassName">

<value>netsourceforgejtdsjdbcDriver</value>

</property>

<property name="url">

<value>jdbc:jtds:sqlserver://127001:1433/Sample</value>

</property>

<property name="username">

<value>test</value>

</property>

<property name="password">

<value>baidu</value>

</property>

</bean>

<bean id="transactionManager"

class="orgspringframeworkjdbcdatasourceDataSourceTransactionManager">

<property name="dataSource">

<ref local="dataSource" />

</property>

</bean>

<bean id="userDAO" class="netxiaxindaoUserDAO">

<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="orgspringframeworkjndiJndiObjectFactoryBean">

<property name="jndiName">

<value>jdbc/sample</value>

</property>

</bean>

<bean id="transactionManager"

class="orgspringframeworktransactionjtaJtaTransactionManager"/>

Ø 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) {

thistransactionManager = transactionManager;

}

public DataSource executeTestSource() {

return dataSource;

}

public void setDataSource(DataSource dataSource) {

thisdataSource = dataSource;

}

public void insertUser() {

TransactionTemplate tt =new TransactionTemplate(getTransactionManager());

ttexecute(new TransactionCallback() {

public Object doInTransaction(TransactionStatus status) {

JdbcTemplate jt = new JdbcTemplate(executeTestSource());

jtupdate(

"insert into users (username) values ('xiaxin');");

jtupdate(

"insert into users (id,username) values(2,

'erica');");

return null;

}

});

}

}

可以看到,在insertUser方法中,我们引入了一个新的模板类:orgspringframeworktransactionsupportTransactionTemplate。 TransactionTemplate封装了事务管理的功能,包括异常时的事务回滚,以及 *** 作成功后的事务提交。和JdbcTemplate一样,它使得我们无需在琐碎的try/catch/finally代码中徘徊。

在doInTransaction中进行的 *** 作,如果抛出未捕获异常将被自动回滚,如果成功执行,则将被自动提交。

这样可以吗

hql等查询方式不能满足性能或灵活性的要求,必须使用SQL时,大家有三种选择:

第一、使用Hibernate 的sql 查询函数,将查询结果对象转为Entity对象。

第二、使用Hibernate Session的getConnection 获得JDBC Connection,然后进行纯JDBC API *** 作;

第三、选择把Spring的JDBCTemplate作为一种很不错的JDBC Utils来使用。

JDBCTemplate的使用很简单,只要在ApplicationContext文件里定义一个jdbcTemplate节点,POJO获得注入后可以直接执行 *** 作,不需要继承什么基类,详见JDBCTemplate参考文档。

AplicationContext定义:

<bean id="jdbcTemplate" class="orgspringframeworkjdbccoreJdbcTemplate">

<property name="dataSource" ref="dataSource"/>

</bean>

实际使用:

SqlRowSet rs = jdbcTemplatequeryForRowSet(sql, params);

按order by id desc limit 0,1进行一次数据查询,查询到的id即为你刚插入的数据id(此方法适用与单用户,多用户适用于楼上的LAST_INSERT_ID()方法)

以上就是关于Spring配置相关问题出错 请帮忙指点一下 谢谢了!全部的内容,包括:Spring配置相关问题出错 请帮忙指点一下 谢谢了!、JAVA jdbcTemplate更改数据库,如何创建新的连接,把值赋给jdbcTemplate。、spring 如何获取 jdbctemplate等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/10152786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存