insert/upsert
根据数据是否存在,判断判断insert或update或忽略,参考【upsert】
upsert与insert参数完全一致,是复制的insert
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会比较快,参考【根据查询插入】
- JDBC操作clickhouse示例
- 关于Orcle的MERGE INTO 如果存在重复数据 覆盖或忽略
- 关于PostgreSQL的ON CONFLICT,如果存在重复数据 覆盖或忽略
- 关于MySQL的insert ignore into和replace into
- insert/update过程中列的控制
- 异构数据源迁移核心部分代码Mysql到Apache Ignite|VoltDB
- Entity中的集合(数组)属性保存到数据库中
- Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'
- upsert(已存在则更新或跳过,中不存在则插入)
- 关于Apache ignite的MERGE 如果存在重复数据 覆盖或忽略
- insert/update Map时大小写的问题
- sequence
- 插入数据后返回主键值
- 简易方式指定数据源和主键
- 插入数组
- 根据查询插入insert into select from
- 插入记录时自动建表
- 日期类型
- 多数据源事务管理器bean.name
- 插入数组类型
- 插入或修改数据时如何判断插入边还是点
- MongoDB基础操作
- save与insert区别
- 关于自动检测表结构
- 关于insert或update时确定哪些列参与到insert或update中