<insert id="saveBatch" parameterType="java.util.List">
insert into sys_slog(
id,
menu,
remote_addr,
request_uri,
method,
params,
user_agent,
exception,
time_consuming,
create_by,
create_date
)
select
SEQ_SYS_SLOG_ID.nextval as id, tab.menu,tab.remote_addr,tab.request_uri,tab.method,tab.params,
tab.user_agent,tab.exception,tab.time_consuming,tab.create_by,tab.create_date
from (
<foreach collection="logs" item="item" index="index"
separator="union all">
select
#{item.menu} as menu,
#{item.remoteAddr} as remote_addr,
#{item.requestUri} as request_uri,
#{item.method} as
method,
#{item.params} as params,
#{item.userAgent} as user_agent,
#{item.exception} as exception,
#{item.timeConsuming} as
time_consuming,
#{item.createBy} as create_by,
#{item.createDate} as
create_date
from dual
</foreach>
) tab
</insert>
insert into sys_slog(
id,
menu,
remote_addr,
request_uri,
method,
params,
user_agent,
exception,
time_consuming,
create_by,
create_date
)
select
SEQ_SYS_SLOG_ID.nextval as id, tab.menu,tab.remote_addr,tab.request_uri,tab.method,tab.params,
tab.user_agent,tab.exception,tab.time_consuming,tab.create_by,tab.create_date
from (
<foreach collection="logs" item="item" index="index"
separator="union all">
select
#{item.menu} as menu,
#{item.remoteAddr} as remote_addr,
#{item.requestUri} as request_uri,
#{item.method} as
method,
#{item.params} as params,
#{item.userAgent} as user_agent,
#{item.exception} as exception,
#{item.timeConsuming} as
time_consuming,
#{item.createBy} as create_by,
#{item.createDate} as
create_date
from dual
</foreach>
) tab
</insert>
mybatis配置文件如上,以上代码是ok的,但是由于用了druid连接池,由于开启了防止sql注入的防火墙配置项,所以导致报错了,错误信息类似
sql injection violation, syntax error: ERROR. token : EXCEPTION, pos
查了半天,最后发现可能是druid语法校验问题,尝试把druid.filters=wall,stat配置项中的wall配置项去交就可以了,不过这样相当于放弃了防止sql注入配置项目。不知道有没有其他更好的解决方案。