1. 程式人生 > >Mybatis:註解式批量insert新增物件資料

Mybatis:註解式批量insert新增物件資料

下面是註解式的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裡面

 

授權:

使用者----角色---許可權

而,使用者----角色有一箇中間表

角色---許可權也有一箇中間表