ORG_INTEREST_TOTAL = #{}, DEL_FLAG = #{item.delFlag}, STATE = #{item.state}, CREATE_BY = #{item.createBy}, CRE" /> ORG_INTEREST_TOTAL = #{}, DEL_FLAG = #{item.delFlag}, STATE = #{item.state}, CREATE_BY = #{item.createBy}, CRE">
  1. 首页 > 智能数码 >

mybatis批量添加 mybatis批量添加数据

Mybatis 常用sql之批量添加和修改

Dao层

mybatis批量添加 mybatis批量添加数据mybatis批量添加 mybatis批量添加数据


int updateByList(List list);

Mappe层

批量修改

update jt_fin_repayment_plan

erestTotal != null" >

ORG_INTEREST_TOTAL = #{},

DEL_FLAG = #{item.delFlag},

STATE = #{item.state},

CREATE_BY = #{item.createBy},

CREATE_TIME = #{item.createTime},

UPDATE_BY = #{item.updateBy},

UPDATE_TIME = #{NOW(),

where REPAYMENT_ID = #{item.repaymentId}

----------------------------------------------------------------------------------------------------------

dao层

//批量添加

int addList(List list);

Map层

批量添加

insert into jt_fin_adjust_rates_project_history (

ID,ADJUST_RATES_ID,PROJECT_ID,START_WHOLE,

END_WHOLE,START_WITHOUT,END_WITHOUT,PROJECT_DATE,

KEEP,AUDIT_FLAG,STATUS,REMARK,DEL_FLAG,

CREATE_BY,CREATE_TIME,UPDATE_TIME,UPDATE_BY

)values

((select UUID()), #{item.adjustRatesId},#{item.projectId},#{item.startWhole},

#{item.endWhole},#{item.startWithout},#{item.endWithout},#{item.projectDate},

#{item.keep},#{item.auditFlag},#{item.status},#{item.remark},#{item.delFlag},

#{item.createBy},sysdate(), #{item.updateTime}, #{item.updateBy})

注意:我的id VARCHAR类型 主键 不能递增 在这里我用的是UUID生成的

原本,想写一个批量添加,回显id但是没实现就不写了,有大佬可以补充一下

mybatis怎么批量插入数据库

你的意思应该是用oracle数据库的序列自动生成的主键id,那么

种方法:你可以在插入主键的时候用序列生成,就是为主键id赋值xxx_seq.nextval,这个序列是你创建的这个table的序列

第二种方法:你可以按照楼上说的,用主键映射,当然对于mysql这种有自增主键和oracle这种用序列的需要不同的设置,楼上代码

很清楚,不做赘述。

第三种方法:有人说不用添加主键,能够自动生成,这个方法我没有尝试过,只记得在nicat

for

mysql

不写主键可以自动计算生成的,楼主可以尝试下。

对于支持自动生成主键的数据库(如SQL

Server),可以采用以下方式:

....

对于不支持自动生成主键(如Oracle),可以采用以下方式:

select

my_seq.nextval

from

dual

....

springboot手动回滚之后再往库里添加数据

可以使用JdbcTemplate类的execute()方法重新执行SQL语句,将数据入库。通过JdbcTemplate的batchUpdate()方法,也可以实现批量添加数据的功能。SpringBoot还提供了其他的数据库作工具,如Hibernate、Mybatis等,也可以用来对数据库进行回滚作和添加数据。

mybatis-plus解决 sqlserver批量插入list报错

解决版本:3.0.6

原因分析:mybatis-plus默认使用Jdbc3KeyGenerator进行添加,但是sqlserver不支持批量返回id,所以会抛出如下异常

解决方案: 重写默认seBatch和seOrUpdateBatch(缺点是批量添加不能返回id,对于不需要返回id的场景适用)将Jdbc3KeyGenerator替换为NoKeyGenerator

步: 建立NoahSqlMethod(也可以不写,但是项目尽量不出现魔法值)

第二步: 建立InsertBatch对象

第三步: 建立NoahSqlInjector对象

第四步: 重写ServiceImpl超类为AbstractNoahServiceImpl

第五步: 将业务service继承类改为AbstractNoahServiceImpl

第六步: 将SqlInjector注入系统中

mybatis 批量作数据

mybatis的批量作有两种方式,一是使用foreach标签,二是使用mybatis的BATCH模型

在xml中通过foreach对表数据进行循环作

在oracle中不支持insert into product(name, type, price) values ('a', 'tv', 1233), ('b', 'ac', 3455),....('','','')这种形式的sql,因此oracle批量插入使用 insert all into table(...) values(...) into table(...) values(...) select from dual; 语句来解决以下方式,并且需要显示指定useGeneratedKeys=false

另一种方法是使用另外一种方法是 insert into table(...) (select ... from dual) union all (select ... from dual)

Mybatis内置的ExecutorType一共有三种,默认为SIMPLE,该模式下它为每个语句的执行创建一个新的预处理语句,并单条提交sql。

而 BATCH 模式会重复使用已经预处理的语句,并且批量执行所有更新语句,显然batch性能将更优;

注意 : batch模式也有自己的问题,比如在Insert作时,在事务没有提交之前,是没有办法获取到自增的id,这在某型情形下是不符合业务要求的。

具体用法如下:

ProductMapper.ja 如下:

mapper.xml 如下:

mybatis怎么批量插入数据库

对于支持自动生成主键的数据库(如SQL Server),可以采用以下方式:

....

对于不支持自动生成主键(如Oracle),可以采用以下方式:

select my_seq.nextval from dual ....

mybatis批量作,怎么实现

方法一:

resultType="ja.lang.String">

SELECT CURRENT_TIMESTAMP()

insert into kangaiduoyaodian ( depart1, depart2, product_name,

generic_name, img, product_specification, unit,

approval_certificate, manufacturer, marketPrice, vipPrice,

website, fetch_time, productdesc ) values

separator=",">

( #{item.depart1}, #{item.depart2}, #{item.productName},

#{item.genericName}, #{item.img},

#{item.productSpecification}, #{item.unit},

#{item.approvalCertificate}, #{item.manufacturer},

#{item.marketprice}, #{item.vipprice}, #{item.website},

#{fetchTime}, #{item.productdesc} )

方法二:

insert into xxxxtable(hkgs,hkgsjsda,office,asdf,ddd,ffff,supfullName,classtype,agent_type,remark)

select #{item.hkgs,jdbcType=VARCHAR},

#{item.hkgsjsda,jdbcType=VARCHAR},

#{item.office,jdbcType=VARCHAR},

#{item.asdf,jdbcType=VARCHAR},

#{item.ddd,jdbcType=VARCHAR},

#{item.ffff,jdbcType=VARCHAR},

#{item.supfullName,jdbcType=VARCHAR},0,0,

#{item.remark,jdbcType=VARCHAR} from dual

可以考虑用union all来实现批量插入。

例如:

insert into XX_TABLE(XX,XX,XX)select 'xx','xx','xx' union all select 'xx','xx','xx' union all select 'xx','xx','xx' ...

先拼装好语句再动态传入insert into XX_TABLE(XX,XX,XX)后面部分

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息