数据源,我把defaultAutoCommit设成了false
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
。
<property name="defaultAutoCommit" value="false"></property>
</bean><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:SqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>类里面,是继承SqlMapClientDaoSupport 这个。
public class UserDao extends SqlMapClientDaoSupport implements IUserDao {
public void save(){
SqlMapClient sqlMap=getSqlMapClientTemplate().getSqlMapClient();sqlMap.startTransaction();
sqlMap.startBatch();for(int i = 0 ;i<list.size();i++){
getSqlMapClientTemplate().insert("User.save",userphone.get(i).toString());
if((i+1)%200==0){
sqlMap.executeBatch();
sqlMap.startBatch();
}
}sqlMap.executeBatch();
sqlMap.startBatch();
sqlMap.commitTransaction();
sqlMap.endTransaction();
}这样写的,批处理根本没有一点效果啊怎么办呢。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
。
<property name="defaultAutoCommit" value="false"></property>
</bean><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:SqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>类里面,是继承SqlMapClientDaoSupport 这个。
public class UserDao extends SqlMapClientDaoSupport implements IUserDao {
public void save(){
SqlMapClient sqlMap=getSqlMapClientTemplate().getSqlMapClient();sqlMap.startTransaction();
sqlMap.startBatch();for(int i = 0 ;i<list.size();i++){
getSqlMapClientTemplate().insert("User.save",userphone.get(i).toString());
if((i+1)%200==0){
sqlMap.executeBatch();
sqlMap.startBatch();
}
}sqlMap.executeBatch();
sqlMap.startBatch();
sqlMap.commitTransaction();
sqlMap.endTransaction();
}这样写的,批处理根本没有一点效果啊怎么办呢。
if (list==null){return;}
SqlMapClientCallback callback = new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
for (T member : list) {
executor.insert(sqlmapNamespace + "." + SQLID_INSERT, member);
}
executor.executeBatch();
return null;
}
};
this.getSqlMapClientTemplate().execute(callback);
}
SqlMapClientCallback callback = new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
for (T member : list) {
executor.insert(sqlmapNamespace + "." + SQLID_INSERT, member);
}
executor.executeBatch();
return null;
}
};
连接确实是我配错了,不管连接的事情。
还有一个问题 是 这个能有返回值吗、、十分感谢!
<![CDATA[
create table #tempuserphone (userphone varchar(50))
]]>
</statement>初始化出错应该怎么写??然后getSqlMapClientTemplate() 用什么方法来调用再次感谢。。谢谢。
create table ##temptablename (userphone varchar(50))
这样是可以的。
执行出来的语句是create table #temptablename (userphone varchar(50))不过sql server #temptablename 是局部临时表,全局的 "##temptablename"怎么建呢??还有然后getSqlMapClientTemplate() 用什么方法来调用我随便用了一个insert不知statement create 或者 drop 应该用什么来调。。谢谢