當前位置:首頁 » 數據倉庫 » 連續插入資料庫mybatis
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

連續插入資料庫mybatis

發布時間: 2022-09-03 09:10:18

A. 使用Mybatis,在Oracle 資料庫中批量插入數據,同時能返回主鍵到對應實體中嗎

你的id是用seq生成的嗎?
是的話:
<select id="selectNextId" resultType="long" >
select seq_sample.nextval from al</select>

B. mybatis怎麼批量插入資料庫

對於支持自動生成主鍵的資料庫(如sql
Server),可以採用以下方式:
....
對於不支持自動生成主鍵(如Oracle),可以採用以下方式:
select
my_seq.nextval
from
al
....

C. 用mybatis向資料庫插入數據,空指針異常

mybatis不能向資料庫裡面插入數據原因可能是執行了插入動作,但是沒有最終commit到資料庫伺服器導致。

mybatis插入數據的例子如下:
package com.mybatis.demo;
import java.io.Reader;
public class Test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static{
try{
reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(Exception e){
e.printStackTrace();
}
}
public static SqlSessionFactory getSession(){
return sqlSessionFactory;
}
//添加用戶
public void addUser(){
User user = new User();
user.setId(4);
user.setUserAddress("人民廣場");
user.setUserName("Birds");
user.setUserAge("102");
SqlSession session = sqlSessionFactory.openSession();
try{
IUserOperation userOperation = session.getMapper(IUserOperation.class);
session.commit();
System.out.println("當前增加的用戶id為:"+user.getId());
}
finally{
session.close();
}
}
public static void main(String[] args) {
Test testUser = new Test();
testUser.addUser();
}
}
當執行到 testUser.addUser();後執行到session.commit();數據就會插入表。

D. mybatis動態sql實現批量插入

默認情況下, #{}語法會促使MyBatis生成PreparedStatement屬性並且使用PreparedStatement的參數(=?)來設置值。如果你想直接將未更改的字元串代入到sql中,可以使用${}。
也就是說,MyBatis看到 #{}會認為你在給sql中的變數賦值,就像JDBC編程中給問號賦值一樣(比如MyBatis會判斷它的類型,並自動在前後加單引號)。而當MyBatis看到${}的時候會直接將之替換成變數的值而不做任何處理。
所以在使用${}的時候,不需要像#{}一樣寫"jdbcType=VARCHAR"之類的屬性。

E. mybatis批量插入返回每條數據的id,返回集合全是最後一條數據的id(資料庫主鍵自增)

sequence就是一個序列,你每次執行 select CASE_SEQ.nextval from al 的時候都會返回唯一的一個ID號,因此你可以先執行這個select取到這個ID,如果這個時候有多個用戶在執行這個操作,那麼他們select到的ID絕對跟你的不一樣(sequence就是保證這一點的)。然後你就可以用這個ID插入記錄,然後再返回這個ID就OK了。 代碼: string sql = "Select CASE_SEQ.currval from al"; OracleConnection conn = DB.getCon(); OracleCommand cmd = conn.CreateCommand(); conn.Open(); string returnID = null; cmd.CommandText = sql; returnID = Convert.ToString(cmd.ExecuteScalar()); //獲取ID sql = "insert into PATIENT_T(pid,name) values(returnID,'黎明')"; //將ID插入資料庫 cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); 結束了,差不多就是這樣,樓主自己調試一下就行了,注意ID在資料庫中應該是varcahr類型的

F. mybatis多線程批量插入MySQL報主鍵沖突

主鍵是自增的嗎?
如果是的話,看一下你的資料庫引擎是MyISAM還是InnoDB。
有可能是引擎是InnoDB的問題