• layui增删改查


    目录

    一,查

            1.主界面代码(mian.jsp)

         2.查询dao方法

     3.action代码

       4.js代码

    二,增

            1.增加dao方法

     2.增加action代码

     5.js代码

    三,删

            1.删除dao方法

       2.删除action代码

       5.js代码

    四,改

            1.修改dao方法

     2.修改action代码


    一,查

            1.主界面代码(mian.jsp)

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@ include file="common/header.jsp" %>
    4. html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    5. <html>
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    8. <script src="static/js/main.js">script>
    9. head>
    10. <body>
    11. <div class="layui-layout layui-layout-admin">
    12. <div class="layui-header">
    13. <div class="layui-logo layui-hide-xs layui-bg-black">layout demodiv>
    14. <ul class="layui-nav layui-layout-left">
    15. <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft">
    16. <i class="layui-icon layui-icon-spread-left">i>
    17. li>
    18. <li class="layui-nav-item layui-hide-xs"><a href="">nav 1a>li>
    19. <li class="layui-nav-item layui-hide-xs"><a href="">nav 2a>li>
    20. <li class="layui-nav-item layui-hide-xs"><a href="">nav 3a>li>
    21. <li class="layui-nav-item">
    22. <a href="javascript:;">nav groupsa>
    23. <dl class="layui-nav-child">
    24. <dd><a href="">menu 11a>dd>
    25. <dd><a href="">menu 22a>dd>
    26. <dd><a href="">menu 33a>dd>
    27. dl>
    28. li>
    29. ul>
    30. <ul class="layui-nav layui-layout-right">
    31. <li class="layui-nav-item layui-hide layui-show-md-inline-block">
    32. <a href="javascript:;">
    33. <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">
    34. tester
    35. a>
    36. <dl class="layui-nav-child">
    37. <dd><a href="">Your Profilea>dd>
    38. <dd><a href="">Settingsa>dd>
    39. <dd><a href="login.jsp">Sign outa>dd>
    40. dl>
    41. li>
    42. <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
    43. <a href="javascript:;">
    44. <i class="layui-icon layui-icon-more-vertical">i>
    45. a>
    46. li>
    47. ul>
    48. div>
    49. <div class="layui-side layui-bg-black">
    50. <div class="layui-side-scroll">
    51. <ul id="menu" class="layui-nav layui-nav-tree" lay-filter="menu">
    52. <li class="layui-nav-item layui-nav-itemed">
    53. <a class="" href="javascript:;">会议管理a>
    54. <dl class="layui-nav-child">
    55. <dd><a href="javascript:;">发布会议a>dd>
    56. <dd><a href="javascript:;">我的会议a>dd>
    57. <dd><a href="javascript:;">会议通知a>dd>
    58. <dd><a href="">历史会议a>dd>
    59. dl>
    60. li>
    61. <li class="layui-nav-item">
    62. <a href="javascript:;">menu group 2a>
    63. <dl class="layui-nav-child">
    64. <dd><a href="javascript:;">list 1a>dd>
    65. <dd><a href="javascript:;">list 2a>dd>
    66. <dd><a href="">超链接a>dd>
    67. dl>
    68. li>
    69. <li class="layui-nav-item"><a href="javascript:;">click menu itema>li>
    70. <li class="layui-nav-item"><a href="">the linksa>li>
    71. ul>
    72. div>
    73. div>
    74. <div class="layui-body">
    75. <div style="padding: 15px;">
    76. <div class="layui-tab" lay-filter="openTab" lay-allowclose="true">
    77. <ul class="layui-tab-title">
    78. <li class="layui-this" lay-id="11">首页li>
    79. ul>
    80. <div class="layui-tab-content">
    81. <div class="layui-tab-item layui-show">首页内容div>
    82. div>
    83. div>
    84. div>
    85. <div class="layui-footer">
    86. 底部固定区域
    87. div>
    88. div>
    89. <script>
    90. script>
    91. body>
    92. html>

    main.js

    1. let $,element;
    2. layui.use(['jquery','element'],function(){
    3. $ = layui.jquery,element = layui.element;
    4. $.ajax({
    5. url:'Permission.action?methodName=menus'
    6. ,dataType:'json'
    7. ,success:function(data){
    8. console.log(data);
    9. let htmlstr = '';
    10. $.each(data,function(i,n){
    11. htmlstr += '
    12. ';
  • htmlstr += ' '+data[i].text+'';
  • //判断当前一级节点是否存在子节点
  • if(data[i].hasChildren){
  • htmlstr += '
    ';
  • let children = data[i].children;
  • $.each(data,function(index,node){
  • htmlstr += '';
  • }
  • htmlstr += '
  • ';
  • });
  • $("#menu").html(htmlstr);
  • }
  • });
  • });
  • /*
  • 1.查找layui的选项卡页面布局代码-静态
  • 2.动态的添加选项卡
  • 3.将选项卡名称换成菜单名
  • 4.重复的tap选项卡不添加,改为选中
  • 5.跳转页面
  • */
  • function openTab(title,url,id){
  • //alert(1)
  • let $node = $("li[lay-id='"+id+"']");
  • if($node.length == 0){
  • element.tabAdd('openTab', {
  • title: title
  • ,content: ""
  • ,id: id
  • })
  • }
  • element.tabChange('openTab', id); //切换到:用户管理
  • }
  • 效果:

     

         2.查询dao方法

    要查询表中的数据:

      dao方法:sql语句记得打空格

    1. package com.zking.dao;
    2. import java.sql.SQLException;
    3. import java.util.List;
    4. import java.util.Map;
    5. import com.zking.entity.User;
    6. import com.zking.util.BaseDao;
    7. import com.zking.util.PageBean;
    8. import com.zking.util.StringUtils;
    9. public class UserDao extends BaseDao{
    10. public User login(User user) throws Exception {
    11. String sql = "select * from t_oa_user where loginName = '"
    12. +user.getLoginName()+"' and pwd = '"+user.getPwd()+"'";
    13. //根据SQL查询符号条件的用户,通常只会返回一条数据
    14. List users = super.executeQuery(sql, User.class,null);
    15. return users == null || users.size() == 0 ? null : users.get(0);
    16. // return super.executeQuery(sql, clz, pageBean);
    17. }
    18. // 查询用户信息及对应的角色,角色是通过case when得来的
    19. public List> list(User user,PageBean pageBean ) throws InstantiationException, IllegalAccessException, SQLException{
    20. String sql = "SELECT * \r\n" +
    21. ",(case rid \r\n" +
    22. "when 1 then '管理员' \r\n" +
    23. "when 2 then '发起者' \r\n" +
    24. "when 3 then '审批者' \r\n" +
    25. "when 4 then '参与者' \r\n" +
    26. "when 5 then '会议室管理员' \r\n" +
    27. "else '其他' end \r\n" +
    28. ") roleName \r\n" +
    29. "from \r\n" +
    30. " t_oa_user where 1=1 ";
    31. String name = user.getName();
    32. if(StringUtils.isNotBlank(name)) {
    33. sql += " and name like '%"+name+"%'";
    34. }
    35. // 当实体类的属性完全包含数据库查询出来的列段时候使用
    36. // super.executeQuery(sql, clz, pageBean)
    37. // 返回List>, 对应的是联表查询,单个实体类对象不完全包含查询列段
    38. return super.executeQuery(sql, pageBean);
    39. }
    40. public int add(User user) throws Exception {
    41. String sql = "insert into t_oa_user(name,loginName,pwd) values(?,?,?)";
    42. return super.executeUpdate(sql, user, new String [] {"name","loginName","pwd"});
    43. }
    44. public int del(User user) throws Exception {
    45. String sql = "delete from t_oa_user where id = ?";
    46. return super.executeUpdate(sql, user, new String [] {"id"});
    47. }
    48. public int edit(User user) throws Exception {
    49. String sql = "update t_oa_user set name=?, loginName=?, pwd=? where id=?";
    50. return super.executeUpdate(sql, user, new String [] {"name","loginName","pwd","id"});
    51. }
    52. }

     3.action代码

    1. 用户查询
    2. public String list(HttpServletRequest req, HttpServletResponse resp) {
    3. try {
    4. PageBean pageBean = new PageBean();
    5. pageBean.setRequest(req);
    6. ListString, Object>> users = userdao.list(user, pageBean);
    7. // 注意:layui中的数据表的格式
    8. ResponseUtil.writeJson(resp, R.ok(0, "用户数据查询成功",pageBean.getTotal(),users));
    9. } catch (Exception e) {
    10. e.printStackTrace();
    11. try {
    12. ResponseUtil.writeJson(resp, R.ok(0, "用户数据查询失败"));
    13. } catch (Exception e1) {
    14. // TODO Auto-generated catch block
    15. e1.printStackTrace();
    16. }
    17. }
    18. return null;
    19. }

       4.js代码

    此时还不能直接加载数据:

    1. //1.初始化数据表格
    2. function initTable(){
    3. table.render({ //执行渲染
    4. elem: '#tb', //指定原始表格元素选择器(推荐id选择器)
    5. // url: 'user.action?methodName=list', //请求地址
    6. height: 340, //自定义高度
    7. loading: false, //是否显示加载条(默认 true)
    8. cols: [[ //设置表头
    9. {field: 'id', title: '用户编号', width: 120},
    10. {field: 'name', title: '用户名', width: 120},
    11. {field: 'loginName', title: '登录账号', width: 140},
    12. {field: '', title: '操作', width: 220,toolbar:'#toolbar'},
    13. ]]
    14. });
    15. }

    绑数据

    1. //2.点击查询
    2. function query(){
    3. table.reload('tb', {
    4. url: $("#ctx").val()+'/user.action', //请求地址
    5. method: 'POST', //请求方式,GET或者POST
    6. loading: true, //是否显示加载条(默认 true)
    7. page: true, //是否分页
    8. where: { //设定异步数据接口的额外参数,任意设
    9. 'methodName':'list',
    10. 'name':$('#name').val()
    11. },
    12. request: { //自定义分页请求参数名
    13. pageName: 'page', //页码的参数名称,默认:page
    14. limitName: 'rows' //每页数据量的参数名,默认:limit
    15. }
    16. });
    17. }

    效果:点击查询即可查出,还可以模糊查询

     

    二,增

            1.增加dao方法

    1. //增加
    2. public int add(User user) throws Exception {
    3. String sql = "insert into t_oa_user(name,loginName,pwd) values(?,?,?)";
    4. return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd"});
    5. }

     2.增加action代码

    1. //用户增加
    2. public String add(HttpServletRequest req,HttpServletResponse resp) {
    3. try {
    4. //影响行数
    5. int rs = userdao.add(user);
    6. if(rs>0) {
    7. ResponseUtil.writeJson(resp, R.ok(200, "用户数据新增成功"));
    8. }
    9. else {
    10. ResponseUtil.writeJson(resp,R.error(0, "用户数据新增失败"));
    11. }
    12. } catch (Exception e) {
    13. e.printStackTrace();
    14. try {
    15. ResponseUtil.writeJson(resp,R.error(0, "用户数据新增失败"));
    16. } catch (Exception e1) {
    17. e1.printStackTrace();
    18. }
    19. }
    20. return null;
    21. }

    点击查询弹出弹出层

     

     5.js代码

    注意layui版本问题:

    1. //3.对话框
    2. function open(title){
    3. layer.open({
    4. type: 2, //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
    5. title:title,
    6. area: ['660px', '340px'], //宽高
    7. skin: 'layui-layer-rim', //样式类名
    8. content: $("#ctx").val()+'/jsp/system/userEdit.jsp', //书本编辑页面
    9. btn:['保存','关闭','...'],
    10. yes: function(index, layero){
    11. //jquery.find
    12. //调用子页面中提供的getData方法,快速获取子页面的form表单数据
    13. let data= $(layero).find("iframe")[0].contentWindow.getData();
    14. console.log(data);
    15. //判断title标题
    16. let methodName="add";
    17. if(title=="编辑")
    18. methodName="edit";
    19. $.post($("#ctx").val()+'/user.action?methodName='+methodName,
    20. data,function(rs){
    21. if(rs.success){
    22. //关闭对话框
    23. layer.closeAll();
    24. //调用查询方法刷新数据
    25. query();
    26. }else{
    27. layer.msg(rs.msg,function(){});
    28. }
    29. },'json');
    30. },
    31. btn2: function(index, layero){
    32. layer.closeAll();
    33. },
    34. btn3: function(index, layero){
    35. layer.msg("批量新增");
    36. return false;
    37. },
    38. btn4: function(index, layero){
    39. layer.closeAll("批量新增");
    40. }
    41. });
    42. }

     

    三,删

            1.删除dao方法

    1. //删
    2. public int del(User user) throws Exception {
    3. String sql = "delete from t_oa_user where id=?";
    4. return super.executeUpdate(sql, user, new String[] {"id"});
    5. }

       2.删除action代码

    1. //用户删除
    2. public String del(HttpServletRequest req,HttpServletResponse resp) {
    3. try {
    4. //影响行数
    5. int rs = userdao.del(user);
    6. if(rs>0) {
    7. ResponseUtil.writeJson(resp, R.ok(200, "用户数据删除成功"));
    8. }
    9. else {
    10. ResponseUtil.writeJson(resp,R.error(0, "用户数据删除失败"));
    11. }
    12. } catch (Exception e) {
    13. e.printStackTrace();
    14. try {
    15. ResponseUtil.writeJson(resp,R.error(0, "用户数据删除失败"));
    16. } catch (Exception e1) {
    17. e1.printStackTrace();
    18. }
    19. }
    20. return null;
    21. }

    会有弹出层

       5.js代码

    1. //在页面中的<table>中必须配置lay-filter="tb_goods"属性才能触发属性!!!
    2. table.on('tool(tb)', function (obj) {
    3. row = obj.data;
    4. if (obj.event == "edit") {
    5. open("编辑");
    6. }else if(obj.event == "del"){
    7. layer.confirm('确认删除吗?', {icon: 3, title:'提示'}, function(index){
    8. $.post($("#ctx").val()+'/user.action',{
    9. 'methodName':'del',
    10. 'id':row.id
    11. },function(rs){
    12. if(rs.success){
    13. //调用查询方法刷新数据
    14. query();
    15. }else{
    16. layer.msg(rs.msg,function(){});
    17. }
    18. },'json');
    19. layer.close(index);
    20. });
    21. }else{
    22. }
    23. });

    四,改

            1.修改dao方法

    1. //改
    2. public int edit(User user) throws Exception {
    3. String sql = "update t_oa_user set name=?,loginName=?,pwd=? where id=?";
    4. return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd","id"});
    5. }

     2.修改action代码

    1. //用户修改
    2. public String edit(HttpServletRequest req,HttpServletResponse resp) {
    3. try {
    4. //影响行数
    5. int rs = userdao.edit(user);
    6. if(rs>0) {
    7. ResponseUtil.writeJson(resp, R.ok(200, "用户数据修改成功"));
    8. }
    9. else {
    10. ResponseUtil.writeJson(resp,R.error(0, "用户数据修改失败"));
    11. }
    12. } catch (Exception e) {
    13. e.printStackTrace();
    14. try {
    15. ResponseUtil.writeJson(resp,R.error(0, "用户数据修改失败"));
    16. } catch (Exception e1) {
    17. e1.printStackTrace();
    18. }
    19. }
    20. return null;
    21. }

    效果

     目前修改不了,我们还要重新写一个js

     代码

    1. let layer,form,$;
    2. layui.use(['layer','form','jquery'],function(){
    3. layer=layui.layer,form=layui.form,$=layui.jquery;
    4. initData();
    5. });
    6. function initData(){
    7. console.log(parent.row);
    8. if(null!=parent.row){
    9. //因为layui.each内部的逻辑问题导致的所以要先深拷贝一份然后再去val
    10. //parent.row:表格行对象
    11. // table的数据在父页面 userMange.jsp
    12. // 点击编辑按钮的时候,当前行赋值给予页面userEdit.jsp
    13. form.val('user',$.extend({}, parent.row||{}));
    14. $('#name').attr('readonly','readonly');
    15. }
    16. }
    17. function getData(){
    18. // 取user from中的值
    19. return form.val('user');
    20. }

  • 相关阅读:
    我参加NVIDIA Sky Hackathon 环境安装(编程环境)
    空域变换-直方图局部处理(CLAHE)
    IntelliJ IDE 插件开发 |(一)快速入门
    销售外勤自动生成日报:每天节省 20 分钟,每年节省 121小时,把更多精力放在客户开发和跟进上
    [国产MCU]-W801开发实例-用户报文协议(UDP)数据接收和发送
    【Hive-Exception】return code 1 from org.apache.hadoop.hive.ql.exec.DDLTaskHIVE
    网络安全问题
    如何将Mysql数据库的表导出并导入到另外的架构
    生活美学 | 8种咖啡冲煮器具分别有什么特点
    React动画实现方案之 Framer Motion,让你的页面“自己”动起来
  • 原文地址:https://blog.csdn.net/hmjcxy/article/details/125902308