一、insert 单条model(entity)动态xml如下:
insert into cartype(CarTypeId,CarTypeName,parking_id,Status,Update_time,State,SynID )
values
(
#CarTypeId#,#CarTypeName#,#parking_id#,#Status#,#Update_time#,#State#,#SynID#
);
需要注意的是
1.
2.
values(#CarTypeId#,#CarTypeName#,#parking_id#,#Status#,#Update_time#,#State#,#SynID#);
中的“#”之间的Key需要与实体(本例为cartype)的属性名称一致(大小写一致),也就是说如果insert时是全字段insert,那values中就是cartype类的所有属性名
cartype类的定义如下:
public partial class cartype
{
public int? CarTypeId { get; set; }
public string CarTypeName { get; set; }
public int? parking_id { get; set; }
public int? Status { get; set; }
public DateTime Update_time { get; set; }
public int? State { get; set; }
public string SynID { get; set; }
}
二、insert 多条即List
insert into cartype(CarTypeId,CarTypeName,parking_id,Status,Update_time,State,SynID )
values
( #[].CarTypeId#,
#[].CarTypeName#,
#[].parking_id#,
#[].Status#,
#[].Update_time#,
#[].State#,
#[].SynID#
)
需要注意以下几点:
1.
这一行中的parameterClass为ArrayList
2.
#[].CarTypeId#中“[]"表示的是批量插入时每次循环时的对象,就像foreach(var item in listCartype)中的item
CarTypeId是cartype对象的一个属性名称
三、批量插入数据时ON DUPLICATE KEY问题解决
cartype表中 synid为主键,如果有主键冲突则更新Update_time的值
insert intocartype(CarTypeId,CarTypeName,parking_id,Status,Update_time,State,SynID )
values
( #[].CarTypeId#,
#[].CarTypeName#,
#[].parking_id#,
#[].Status#,
#[].Update_time#,
#[].State#,
#[].SynID#
)
ON DUPLICATE KEY UPDATE
update_time=values(Update_time)
注意:执行批量insert时 要使用values函数,才可以解决主键冲突问题
例如:cartype表中有两条数据
synid=1,updatetime=’2015-12-0201:00:00‘
synid=2,updatetime=’2015-12-0202:00:00‘
执行如下sql时:
insert intocartype(SynID,Update_time )
values
(3,'2015-12-02 03:00:00'),
(2,'2015-12-0222:22:22')
ON DUPLICATEKEY UPDATE
update_time=values(Update_time)
执行结束后数据库里有三条数据
synid=1,updatetime=’2015-12-02 01:00:00‘
synid=2,updatetime=’2015-12-02 22:22:22‘
synid=3,updatetime=’2015-12-02 03:00:00‘
synid=3的数据直接insert了,而synid=2的数据因为数据库中已经有synid=2的数据,所有没有执行insert而是更新为:
updatetime=’2015-12-02 22:22:22‘
四、C#后台代码调用方法主要代码如下:
MySqlDao> md =new MySqlDao>();
md.ExecuteInsert(cartype,"cartype-insert_list");
public void ExecuteInsert(T obj, stringstmtId)
{
if (obj == null)
{
throw new ArgumentNullException("obj");
}
Instance().Insert(stmtId, obj);
}