下面是注解式的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里面
授权:
用户----角色---权限
而,用户----角色有一个中间表
角色---权限也有一个中间表