最近,我在制作项目时遇到了一个非常纠结的问题。由于业务之间的关系,DB的数据表无法确定,而且在使用过程中可能会增加字段,这给我插入时带来了很多麻烦。
让我们看看我在一天结束时做了些什么。
<!{一{
插入tg_fcst_lines($ { linecolumn })
选择的结果。*,sq_fcst_lines.nextval从(
} } >
(选择
# { _value }
从双)
因为数据表是不确定的,所以我不能确定我要插入的字段,而且因为它是大量插入的,所以很难确定值的值。
参数我通过MyBatis是地图:
图insertmap =新HashMap();
InsertMap.put(linecolumn
InsertMap.put(linelist
linecolumn是一个字符串,并linelist是列表:
表linelist =新的ArrayList();
linelist存储在地图,对应的数据表字段的映射键,值是插入的值,这样我们就可以通过foreach提取列表的值,如INSERT语句的值,但由于映射出的
顺序,顺序存储。
遍历时,值的顺序并不总是相同的。因此,为了确保插入字段和值可以是一一对应的,我们可以从map中提取密钥,并将字符串作为插入字段迭代。
字符串linecolumn =SQL; / /马赛克,作为INSERT语句的一部分
{ }查看java plaincopy
地图线路地标图= linelist.get(0);
对于(字符串键:linemap.keyset()){
linecolumn + =键+
}
linecolumn =line_id ;
这里的行)id是一个自增字段,在语句中直接写入序列是
错误的,因此第一遍历列表将获取作为结果的值,并提取结果的所有值,并将序列作为插入值。
两foreace嵌套实现价值时是采取与外foreach遍历列表,并在内层foreach遍历图。
本文
介绍了以上内容。Oracle + MyBatis使用动态SQL来描述所有批量插入插入字段时,不确定。希望你能喜欢。