Mybatis:註解式批量insert新增物件資料
阿新 • • 發佈:2018-11-30
下面是註解式的mybatis
//為Role授權 @Insert({"<script>", "insert into rolemenu(roleId,menuId) values ", "<foreach collection='menuIds' item='item' index='index' separator=','>", "(#{roleId}, #{item})", "</foreach>", "</script>"}) public void insertRolePower(@Param(value = "roleId") int roleId, @Param(value = "menuIds") List<Integer> menuIds);
list中含有大量的資料,但速度可能稍慢,但這種只調用一次連線的批處理形式,絕對比foreach不斷呼叫一條普通的insert語句要好。
事實上,上面所述的方式屬於拼接。
效果如下:
insert into userrole(userId,roleId) values (?, ?) , (?, ?) , (?, ?) , (?, ?) , (?, ?)
相對應的新增資料
切記:
//${userId}
不可如此
否則報錯。
正確的方式:
佔位符:#{ }
諸如此類,那麼批量的sql操作都可以這樣
拼接
下面,是額外的一些小技術:
<script type="text/javascript"> /** * * 選單 */ $(function () { $.post('userAllMenu.action', function (objs) { $('#menudiva').empty();// 清空 // $('#menudivb').empty(); // $('#menudivc').empty(); // $('#menudivd').empty(); // $('#menudive').empty(); $('#menudivf').empty(); // $('#menudivg').empty(); var ua = ""; // var ub = ""; // var uc = ""; // // var ud = ""; // var ue = ""; var uf = ""; // var ug = ""; for (var i = 0; i < objs.umenus.length; i++) { var uu = "<li><a href='" + objs.umenus[i].menuPath + "'>" + objs.umenus[i].menuName + "</a></li>"; if (objs.umenus[i].menuFather == 1) { ua += uu; } // else if (objs[i].parent == 2) { // ub += "<li><a href='../page/user_" + objs[i].url + ".jsp'>" // + objs[i].menuName + "</a></li>"; // } // // else if (objs[i].parent == 3) { // uc += "<li><a href='../page/rd_" + objs[i].url + ".jsp'>" // + objs[i].menuName + "</a></li>"; // } // // else if (objs[i].parent == 4) { // ud += "<li><a href='../page/pay_" + objs[i].url + ".jsp'>" // + objs[i].menuName + "</a></li>"; // } else if (objs[i].parent == 5) { // ue += "<li><a href='../page/inv_invoice" + objs[i].url + ".jsp'>" // + objs[i].menuName + "</a></li>"; // } else if (objs.umenus[i].menuFather == 6) { uf += uu; } // else if (objs[i].parent == 7) { // ug += "<li><a href='../" + objs[i].url + ".jsp'>" // + objs[i].menuName + "</a></li>"; // } } $('#menudiva').append(ua); // $('#menudivb').append("<ul>" + ub + "</ul>"); // $('#menudivc').append("<ul>" + uc + "</ul>"); // // $('#menudivd').append("<ul>" + ud + "</ul>"); // $('#menudive').append("<ul>" + ue + "</ul>"); // alert(uf); $('#menudivf').append(uf); // $('#menudivg').append("<ul>" + ug + "</ul>"); }, 'json'); }) </script>
JQuery,JQuery的Ajax載入資料,並且拼接html的標籤。
<ul id="menudiva">
</ul>
將一堆的li標籤以慢載入的方式注入ul裡面
授權:
使用者----角色---許可權
而,使用者----角色有一箇中間表
角色---許可權也有一箇中間表