insert/upsert
最后更新:2024-09-10 08:19:53
|
状态:未完成
根据数据是否判断判断insert或update或忽略,参考【upsert】
insert支持两种格式
一、根据值
-
service.insert(DataRow/DataSet)
如果是从数据库中查出来的DataRow中会记住表名,如果是在Java中创建的而且没有设置数据来源(表)的参数需要在insert时指定
service.insert("表名", DataRow)
比较常见的情况是从多个表或视图中查出10列数据,操作完后需要保存3列到另外一个表,这时需要同时指定表、数据、列(属性)
service.insert("表名", DataRow, "列1", "列2", "列3")
DataRow是一种Map结构,相当于表中的一行,但DataRow有着比Map更强更便捷的数据处理能力,如数据格式化、json/xml转换、忽略大小写、批量操作、属性值动态组合,参考【DataRow】
DataSet是DataRow的集合,相当于表中的多行,DataSet同样提供了更多关于集合的操作,如行列转换、类SQL查询、各种数学计算等,参考【DataSet】 -
service.insert(Entity/EntitySet/Collection)
Entity是指在具体项目中创建的实体类,如用户、部门等
插入Entity的方法与DataRow类似,稍有区别的是Entity上可以用注解设置表名、列名,主键,以及ManyToMany、OneToMany等,注解方式兼容JPA
DataSet/DataRow提供了与Entity/EntitySet之间的转换方法,如
User user = new DataRow().entity(User.class)
EntitySet
数量比较大,又不需要处理时,可以直接根据SELECT插入,跳过了网络IO会比较快,参考【根据查询插入】