MyBatis批量插入数据使用的都是
<foreach></foreach>
标签,SQL Server与MySQL语法是不一样的
SQL Server数据库
insert 语句插入多行格式如下:
insert into BS_BarCode (SNCode,PrintDate) values ('2021121301',getdate());
insert into BS_BarCode (SNCode,PrintDate) values ('2021121302',getdate());
MySQL数据库
insert 语句插入多行格式有两种:
格式一:
insert into bs_barcode (SNCode,PrintDate) values ('2021121301',now()),('2021121302',now())
格式二:
insert into bs_barcode (SNCode,PrintDate) values ('2021121303',now());
insert into bs_barcode (SNCode,PrintDate) values ('2021121304',now())
SQL Server数据库批量插入如果使用MySQL的格式一插入会报语法错误,只能使用第一种
MyBatis批量插入两种数据库对比
SQL Server
<!--批量保存sn条码-->
<insert id="insertSns">
<foreach collection="sns" item="sns" separator=";" index="index" >
insert into BS_BarCode (SNCode,PrintDate) values (#{sns}, getdate())
</foreach>
</insert>
MySQL
<insert id="insertProduct" parameterType="java.util.List">
insert into m_in(Name,Code,Qty,DocNo,Epc,ScanTime,Scaner,Notes)
values
<foreach collection="list" item="item" separator="," index="index" >
(#{item.name},#{item.code},#{item.qty},#{item.docno},#{item.epc},#{item.scantime},#{item.scanner},#{item.notes})
</foreach>
</insert>
SQL Server与MySQL获取当前时间的函数
SQL Server获取当前时间的函数:getdate()
MySQL获取当前时间的函数:now()