多对多的添加修改,显示,的逻辑步骤

首先,我们写多对多,这个多对多虽然用的没有一对多的多,但是用处也不少

SQL的显示,我们主要的不是关于表结构,而是看SQL怎么谢,需要用到那些函数,和这些应该怎么联系起来

    select a.*,b.fname from (
    select a.*,b.aname from
    (select a.*,b.name tname from t_order a left join t_time b
    on a.time_id = b.id) a left join t_address b
    on a.address_id = b.aid limit #{index},#{limit} ) a left join
    (select order_id,group_concat(f.name) fname from t_order_foot a left join
    t_foot f
    on a.foot_id = f.id group by order_id) b
    on a.id = b.order_id

下面我们来看添加,其实添加的话,一般都会直接添加单表或一对多的,但是多对多的基本上用于多选框中,所以,这个就有步骤了,

添加的SQL(标红重点)

  <insert id="saveOrder" useGeneratedKeys="true" keyProperty="id" parameterType="com.baidu.foot.entity.Order" >
    insert into t_order (id, name, tel,
      datea, time_id, address_id
      )
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{tel,jdbcType=VARCHAR},
      sysdate(), #{timeId,jdbcType=INTEGER}, #{addressId,jdbcType=INTEGER}
      )
  </insert>

添加的话只有把这两个属性放入才可以,因为你是以这张表为主表,你需要取到他们关联的ID

添加多表的SQL

<!-- 添加多表 -->
  <insert id="saveT_O_F" parameterType="list">
      insert into t_order_foot(order_id,foot_id) values
          <foreach collection="list" item="item" separator=",">
              (#{item.orderId},#{item.footId})
          </foreach>
  </insert>

在逻辑层中,只需要给他传一个选取的多选的Id进行遍历循环放入list即可

//添加多表
        String[] split = ids.split(",");
        List list = new ArrayList();
        for (String str : split) {
            T_O_F tOF = new T_O_F(Integer.parseInt(str), order.getId());
            list.add(tOF);
        }
        orderMapper.saveT_O_F(list);

就可以了,

删除,就比较简单了,你主表是通过Id进行删除的,那么多表就通过主表关联的外键的Id进行删除就可以了,参数也是相同的

回显

回显比较麻烦,SQL也要比较注意的,不多说,直接代码

    select a.*,b.footids from
    (select * from t_order where id = #{id}) a left join
    (select order_id,group_concat(cast(foot_id as char)) footids from t_order_foot
    GROUP by order_id ) b
    on a.id = b.order_id 

多表把不是主表的关联Id给弄成一个char型,效果是这样的

在主表实体类中重新定义一个这样的字段

在前台这样回显

$(document).ready(function(){
                var aa = "${order.footids}".split(",")
                  for (  i = 0; i < aa.length; i++) {
                    $(‘#‘+aa[i]).attr(‘checked‘,true);
                }
        })

就可以了,

修改

修改的其实没有什么逻辑性的,其实就是删除的多表和添加的多表进行结合就行了,

一般就是,先定义一个主表单表的修改方法,然后调用删除多表的方法,在调用添加多表的就可以了,参数都一样,以主表的Id为主

时间: 2024-08-09 15:28:36

多对多的添加修改,显示,的逻辑步骤的相关文章

ASP.NET MVC用存储过程批量添加修改数据

用Entity Framework 进行数据库交互,在代码里直接用lamda表达式和linq对数据库操作,中间为程序员省去了数据库访问的代码时间,程序员直接可以专注业务逻辑层的编写.但是对于比较复杂的表关系关联查询或者修改就比较费劲了.通常可以采用的方式是用EF执行SQL语句或者"存储过程",特别是执行复杂批量任务,当然也可以在MVC底层用ADO.NET,这里就不多说了.怎么做批量呢?这里讲讲在EF下用存储过程批量添加修改数据. 需求是这样的:需要批量添加修改产品类别的投放任务数额,每

打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demoback.lalalaweb.com  前台:demo.lalalaweb.com 演示过程中可能会发现bug,希望即时留言反馈,谢谢 源码下载:https://github.com/sutianbinde/classweb               //不是全部的代码,每次更新博客才更新代码 学

【j2ee spring】40、巴巴运动网的产品添加修改选择

巴巴运动网的产品添加修改选择 1.项目图解 2.我们开始做我们的相应的功能模块 页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985 产品的添加界面add_product.jsp <%@ page contentType="text/html;charset=utf-8" %> <%@ taglib uri="/struts-tags" prefix="s&

IDEA修改显示星号*和热部署

IDEA修改显示*星号: IDEA热部署: 两步: 1. 2. Ctrl+Alt+Shift+/ 打开下面界面,选Registry 对于Springboot应用,可能无法启动,在上述两步不起作用的情况下,增加下列步骤: 1.pom.xml添加devtools热部署依赖 2.找到Edit Configurations,下面两图中都行 找到下图,图中第2个红框,看情况配置就行了, On "Update" action意思:当用户主动执行更新的时候更新,比如用Ctrl+S保存时,才会自动重新

如何在 Debian GNU/Linux 添加修改软件源

- 转载请注明出处 http://www.zzzke.cn/ 或超链接至本文 -- 我们在 Debian GNU/Linux 中有时软件源的网络速度慢,在使用 apt 安装源中的软件时总是因源服务器负荷大而时间很长,所以想换个软件源或添加软件源又不知道怎么做,现在就给您讲一下 Debian GNU/Linux 中软件源的修改方法.步骤很简单,只要修改在 /etc/apt/sources.list 文件中的软件源地址就可以了,但要记得这个文件不是谁都能修改的,要有系统管理员权限才行. 首先要以 系

FileSystemObject组件新建读取添加修改删除功能实例

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>FileSystemObject组件应该实例</title> </head> <

添加数据源,管理工具--数据源(ODBC),点击添加不显示该驱动

win7系统下或者64位系统下,安装完mysql-connector-odbc驱动后,直接进入:管理工具--数据源(ODBC),点击添加不显示该ODBC驱动 问题解决如下: C:\Users\Administrator>cd\windows\SysWOW64 C:\windows\SysWOW64>odbcad32 回车弹出 ODBC数据源管理器,在此窗口下进行添加操作即可看到:MySQL ODBC 5.1 Driver,点击完成,进行后续操作,完成添加操作,图示如下:

【转】C#添加修改删除文件文件夹大全

[转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt");sw.WriteLine("追逐理想");sw.WriteLine("kzlll");sw.WriteLine(".NET笔记");sw.Flush();sw.Close();C#拷贝文件string

Easyui Datagrid 修改显示行号列宽度

EasyUI中Datagrid的第一列显示行号,可是如果数据量大的的时候,显示行号的那一列数据会显示不完全的. 可以通过修改Datagrid的样式来解决这个问题,在样式中加入下面这个样式,就可以自己修改显示行号列的宽度了 .datagrid-header-rownumber,.datagrid-cell-rownumber{ width:40px; }