我使用的Spring +Ibatis
在我做批量从插入的时候遇到了数据插不进去的问题,请大家帮忙看看
数据访问接口的代码是:
public void saveMessages(String oknos, String userId, String title,String msg){
Map<String,Object> params = new HashMap<String,Object>();
params.put("userId", userId);
params.put("title", title);
params.put("msg", msg);
params.put("oknos", oknos);
this.getSqlMapClientTemplate().insert("insertMessageByOKNOS", params);
}
定义的IBATIS映射文件是:
<insert id="insertMessageByOKNOS" >
INSERT INTO scrip (scrip_id,loginer_id,myfriend_id,isread,msg,scrip_title,stime)
SELECT scrip_id.NEXTVAL ,$userId$, member_register_id ,
0,#msg#,#title#,SYSDATE FROM login_information WHERE member_register_okno IN (#oknos#)
</insert>
调用保存方法就是插入不进去数据,也不出错,但是如果把定义的sql语句换成
<insert id="insertMessageByOKNOS" >
INSERT INTO scrip (scrip_id,loginer_id,myfriend_id,isread,msg,scrip_title,stime)
SELECT scrip_id.NEXTVAL ,123, member_register_id ,
0,'222222','222222',SYSDATE FROM login_information WHERE member_register_okno IN ('45628846','45628847','45628849')
</insert>
就可以插入,通过参数传递就不可以,下面是Spring的日志
2008-06-23 11:51:58,398 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Creating new transaction with name [com.inc.i941ok.server.BaseManager.saveMessages]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
2008-06-23 11:51:58,398 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Acquired Connection [org.apache.commons.dbcp.PoolableConnection@2f6aea] for JDBC transaction
2008-06-23 11:51:58,398 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Switching JDBC Connection [org.apache.commons.dbcp.PoolableConnection@2f6aea] to manual commit
2008-06-23 11:51:58,398 DEBUG [org.springframework.transaction.support.TransactionSynchronizationManager] Bound value [org.springframework.jdbc.datasource.ConnectionHolder@158bc22] for key [org.apache.commons.dbcp.BasicDataSource@1dea651] to thread [http-8080-2]
2008-06-23 11:51:58,398 DEBUG [org.springframework.transaction.support.TransactionSynchronizationManager] Initializing transaction synchronization
2008-06-23 11:51:58,398 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] Getting transaction for [com.inc.i941ok.server.BaseManager.saveMessages]
2008-06-23 11:51:58,398 DEBUG [org.springframework.orm.ibatis.SqlMapClientTemplate] Opened SqlMapSession [com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl@a76306] for iBATIS operation
2008-06-23 11:51:58,398 DEBUG [org.springframework.transaction.support.TransactionSynchronizationManager] Retrieved value [org.springframework.jdbc.datasource.ConnectionHolder@158bc22] for key [org.apache.commons.dbcp.BasicDataSource@1dea651] bound to thread [http-8080-2]
2008-06-23 11:51:58,398 DEBUG [java.sql.Connection] {conn-100008} Connection
2008-06-23 11:51:58,398 DEBUG [org.springframework.orm.ibatis.SqlMapClientTemplate] Obtained JDBC Connection [Transaction-aware proxy for target Connection [org.apache.commons.dbcp.PoolableConnection@2f6aea]] for iBATIS operation
2008-06-23 11:51:58,398 DEBUG [java.sql.Connection] {conn-100008} Preparing Statement: INSERT INTO scrip (scrip_id,loginer_id,myfriend_id,isread,msg,scrip_title,stime) SELECT scrip_id.NEXTVAL ,123, member_register_id , 0,?,?,SYSDATE FROM login_information WHERE member_register_okno IN (?)
2008-06-23 11:51:58,398 DEBUG [org.springframework.transaction.support.TransactionSynchronizationManager] Retrieved value [org.springframework.jdbc.datasource.ConnectionHolder@158bc22] for key [org.apache.commons.dbcp.BasicDataSource@1dea651] bound to thread [http-8080-2]
2008-06-23 11:51:58,398 DEBUG [java.sql.PreparedStatement] {pstm-100009} Executing Statement: INSERT INTO scrip (scrip_id,loginer_id,myfriend_id,isread,msg,scrip_title,stime) SELECT scrip_id.NEXTVAL ,123, member_register_id , 0,?,?,SYSDATE FROM login_information WHERE member_register_okno IN (?)
2008-06-23 11:51:58,398 DEBUG [java.sql.PreparedStatement] {pstm-100009} Parameters: [qqqqqqqqqqqqqqqq, qqqqqqqq, 45628846,45628847,45628849]
2008-06-23 11:51:58,398 DEBUG [java.sql.PreparedStatement] {pstm-100009} Types: [java.lang.String, java.lang.String, java.lang.String]
2008-06-23 11:51:58,414 DEBUG [org.springframework.transaction.support.TransactionSynchronizationManager] Retrieved value [org.springframework.jdbc.datasource.ConnectionHolder@158bc22] for key [org.apache.commons.dbcp.BasicDataSource@1dea651] bound to thread [http-8080-2]
2008-06-23 11:51:58,414 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] Completing transaction for [com.inc.i941ok.server.BaseManager.saveMessages]
2008-06-23 11:51:58,414 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Triggering beforeCommit synchronization
2008-06-23 11:51:58,414 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Triggering beforeCompletion synchronization
2008-06-23 11:51:58,414 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Initiating transaction commit
2008-06-23 11:51:58,414 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Committing JDBC transaction on Connection [org.apache.commons.dbcp.PoolableConnection@2f6aea]
2008-06-23 11:51:58,414 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Triggering afterCommit synchronization
2008-06-23 11:51:58,414 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Triggering afterCompletion synchronization
2008-06-23 11:51:58,414 DEBUG [org.springframework.transaction.support.TransactionSynchronizationManager] Clearing transaction synchronization
2008-06-23 11:51:58,414 DEBUG [org.springframework.transaction.support.TransactionSynchronizationManager] Removed value [org.springframework.jdbc.datasource.ConnectionHolder@158bc22] for key [org.apache.commons.dbcp.BasicDataSource@1dea651] from thread [http-8080-2]
2008-06-23 11:51:58,461 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Releasing JDBC Connection [org.apache.commons.dbcp.PoolableConnection@2f6aea] after transaction
2008-06-23 11:51:58,461 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Returning JDBC Connection to DataSource
2008-06-23 11:51:58,461 DEBUG [org.springframework.orm.ibatis.SqlMapClientTemplate] Opened SqlMapSession [com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl@1563e06] for iBATIS operation
2008-06-23 11:51:58,461 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Fetching JDBC Connection from DataSource
分享到:
- 2008-06-23 11:59
- 浏览 5670
- 评论(3)
- 论坛回复 / 浏览 (3 / 9553)
- 查看更多
相关推荐
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
NULL 博文链接:https://vbtboy.iteye.com/blog/831099
最近遇到需要批量update数据的问题,一开始用了一个for循环去update,数据量大的时候效率很低。原因是for循环每次update一条语句,都是一次连接过程。遇到大批数据更新的时候,效率就可想而知了。在google上找了一遍...
ibatis 批量 增删改查
ibatis批量存储
ibatis批量处理操作实现,以及sping中需要注意点
通过foreach实现ibatis的批量插入
ibatis 数据缓存,帮你了解ibatis的数据缓存机制。
iBATIS 级联iBATIS 级联iBATIS 级联
如何解决动态数据表名,动态字段名情况下,由ibatis缓存select字段而引起的字段找不到的情况?以下是最简单的解决办法! 本文中内容真实可靠,保证用户很快掌握
mysq增删改查,jdbc 驱动加载 各个类和接口详解,与ibatis对比。批量查询,分页处理。
实现ibatis对数据的连接,增查删改。.xml文件对sql语句的映射。基本知识基本全部覆盖
ibatis 乱码解决 ibatis乱码 gbk iso_8859_1 乱码
ibatis批量删除的方法.docx
ibatis学习 ibatis总结 ibatis ibatis ibatis
ibatis批量
今天小编就为大家分享一篇关于ibatis结合oracle批量插入三种方法的测评,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
介绍Ibatis框架中需要同时连接多个资料库的方法,包括.net和Java两种