为了节省性能,在使用数据库的时候我们尽量减少连接数据库次数,所以在插入多条数据的时候就需要我们在一条SQL中搞定多条数据的插入。
贴入完整代码:
<insert id="insertRoleControllerAction" parameterType="java.util.List">
insert into th_sys_role_controller_action(id, role_id, controller, action, request_url)
select ROLE_CONTROLLER_ACTION_SEQ.Nextval as id, role_id, controller, action, request_url
from (
<foreach collection="list" item="item" index="index" separator="union all">
select '${item.roleId}' as role_id,
'${item.controller}' as controller,
'${item.action}' as action,
'${item.requestUrl}' as request_url
from dual
</foreach>
)
</insert>
该示例中,ID的自增使用了序列来进行自增长,循环使用了<foreach>标签,其中collection表示传入数据类型,此例中为list类型,item为对象的别名,后两位按照上面进行填写即可,sqpartor参数与MySQL则有些不同,在MySQL中该参数为“,”
需要注意的点:遍历获取数据时,引号不能掉,符号为“$”,普通获取传入数据为“#“