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里面

授权:

用户----角色---权限

而,用户----角色有一个中间表

角色---权限也有一个中间表

猜你喜欢

转载自blog.csdn.net/qq_43532342/article/details/84038261