AVUE做二级联查,本次需求:地市、市县做二级联动

目录

a. 数据库设计

b.前端代码解析***:**

c. 后端接口解析:

注意:


a. 数据库设计

表结构一定要设计好, 包括:主键、编号(code-> 含义:地市、市县的唯一标识)、父类编码(在本次需求中,地市的编码即为市县的父类编码),名称

序号字段名数据类型非空主键默认值描述
1idbigint(100)NOPRI(NULL)主键
2codevarchar(100)YES(NULL)编号
3parent_codevarchar(100)YES(NULL)父类编码
4namevarchar(100)YES(NULL)名称

部分数据示例:

b.前端代码解析***:**

- 由于采用avue技术实现,所以tableOption中配置是核心,只需在这两个级联字段中添加配置: 

{
       "type": "select",
       "label": "地市",
       "prop": "s1",
       "search": true,
       "cascader": ['s2'],  /* 第二个级联属性 */
       "dicUrl": "/abu-omnc/abujtkdarea/getCityName", /* 后端接口地址:第一个级联属性的值<-通过接口获取  */
       "props": {
         "label": "name", /* 对应的是dicurl查出来的数据的字段名-名称(name) */
         "value": "code" /* 同上,编码(code)  */
         },
       rules: [
         {
           required: true,
           message: '请选择城市',
           trigger: 'blur'
         }
       ],
     },
     {
       "type": "select",
       "label": "市县",
       "prop": "s2",
       "search": true,
       "props": {
         "label": "name",
         "value": "code",
         "parentId": "parentCode"
       },
       rules: [
         {
           required: true,
           message: '请选择城市',
           trigger: 'blur'
         }
       ],
       "dicUrl": `/abu-omnc/abujtkdarea/getAreaName?parentCode={{key}}`, 
       /* 
       1.dicUrl得到的数据会回填到二级框, 会在新增、编辑的级联中生效
       2.parentCode是一级框传过来的值;
       3.{{key}}:通配符,指代一级框传过来的值,(注意符号: ` `)
        */
       "searchUrl": '/abu-omnc/abujtkdarea/getAreaName',
       /* searchUrl 得到的数据会回填到二级框,会在搜索的级联中生效 */
     },

c. 后端接口解析:

/abujtkdarea/getCityName: 得到'地市'


 /**
      * 得到地市
      */
     @ApiOperation(value = "查询地市", notes = "查询地市")
     @GetMapping("/getCityName" )
     public R getProName(Page page, AbuJtkdArea abuJtkdArea) {
         LambdaQueryWrapper<AbuJtkdArea> lambda = new QueryWrapper<AbuJtkdArea>().lambda();
         LambdaQueryWrapper<AbuJtkdArea> eq = lambda.eq(AbuJtkdArea::getParentCode, "0");
         return R.ok(abuJtkdAreaService.list(eq));
     }

/abujtkdarea/getAreaName: 根据地市得到对应的市区


 /**
      * 分页查询 根据地市得到对应的市区
      * @param page 分页对象
      * @param jtkdArea n_jtkd_area
      * @return
      */
     @ApiOperation(value = "市区", notes = "市区")
     @GetMapping("/getAreaName" )
     public R getAreaName(Page page, AbuJtkdArea jtkdArea) {
         LambdaQueryWrapper<AbuJtkdArea> lambda = new QueryWrapper<AbuJtkdArea>().lambda();
         LambdaQueryWrapper<AbuJtkdArea> eq = lambda.eq(AbuJtkdArea::getParentCode, jtkdArea.getParentCode());
         return R.ok(abuJtkdAreaService.list(eq));
     }

注意

在新增和编辑时,级联会失效,数据尽管已经取到,但是二级框的数据却没有回填?

解决方法:强制刷新

代码:在avue.js中添加强制刷新的代码,了解一下

希望我在工作中遇到的问题可以帮助到你,如果有不懂得可以留言发问.....

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个简单的示例,演示如何使用Java程序实现两个表的联查: ```java import java.sql.*; public class JoinTablesExample { public static void main(String[] args) { try { // 连接数据库 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // 创建 SQL 查询语句 String sql = "SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id"; // 执行查询 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); // 遍历结果集并输出数据 while (rs.next()) { int id = rs.getInt("id"); String name1 = rs.getString("name1"); String name2 = rs.getString("name2"); System.out.println("id: " + id); System.out.println("name1: " + name1); System.out.println("name2: " + name2); System.out.println("--------------------"); } // 关闭连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 请注意,这只是一个简单的示例,假设你已经安装了MySQL数据库,并且创建了名为"table1"和"table2"的表,这两个表之间有一个名为"id"的列进行联接。你需要将上述代码中的"jdbc:mysql://localhost:3306/mydatabase"替换为你自己的数据库连接信息,以及"username"和"password"替换为你的数据库用户名和密码。 此示例使用Java的JDBC API连接到数据库,并执行了一个带有INNER JOIN的SQL查询,将两个表连接起来,并输出结果。请根据你的实际需求进行适当的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值