insert/upsert

最后更新:2024-09-10 08:19:53 | 状态:未完成

根据数据是否判断判断insert或update或忽略,参考【upsert
insert支持两种格式

一、根据值

  1. 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
  2. service.insert(Entity/EntitySet/Collection)
    Entity是指在具体项目中创建的实体类,如用户、部门等
    插入Entity的方法与DataRow类似,稍有区别的是Entity上可以用注解设置表名、列名,主键,以及ManyToMany、OneToMany等,注解方式兼容JPA

DataSet/DataRow提供了与Entity/EntitySet之间的转换方法,如
User user = new DataRow().entity(User.class)

EntitySet users = new DataSet().entitys(User.class)


二、根据select结果

INSERT INTO A SELECT * FROM B

数量比较大,又不需要处理时,可以直接根据SELECT插入,跳过了网络IO会比较快,参考【根据查询插入



首页 最近更新 搜索 提交 回复