跳转路由并传参,多表查询注意事项,前端两个类型,一个值实现两种查询

今天实现点击表格中的用户已绑定数据,跳转到另一个界面,直接显示表格信息。并支持在一个input标签中输入id或者名称实现查询。这个比较难搞,想复杂了。导致用了很长时间。

跳转路由并传参:

首先注册路由,并引入视图。再在需要跳转处绑定路由。跳转时可以进行传参,再另一个视图中根据传的参数进行显示数据。实现如下:

{
    path: '/user',
    component: Layout,
    hidden: true,
    redirect: 'noredirect',
    children: [
      {
        path: '/data/individualinfo/userData',
        component: () => import('@/views/data/individualinfo/userData'),
        name: 'userData',
        meta: { title: '用户数据', icon: 'user' }
      }
    ]
  },

绑定路由并传参:

//跳转到用户数据界面,并传参
      goToUserData(userId){

        this.$router.push({
            name:'userData',
            params:{
                id : userId,
            }
        });

在跳转后的试图中接收参数:

//利用生命周期函数接收参数
created() {
        console.log(this.$route.params.id)    // 输出跳转路由时的参数,用户id
        this.queryData.id = this.$route.params.id;  //接收id,利用此id查询
        this.getList();
    },

别的跳转路由并传参方式看这位大佬:

https://www.cnblogs.com/betterwgo/p/13125346.html

多表查询时,返回的数据包含好几个表的字段,定义一个实体类,用来接收该次多表查询返回的数据。注意定义时别忘了@Data注解,否则自定义的字段无法映射到。

由于要求一个input框中可以支持id和名称进行查询。一开始我以为数据库查询id时,值需要和数据库中id字段类型一致。然后考虑用object类接收前端传过来的数据,再对接收到的数据进行instanceof判断类型。再写不同的mapper方法进行查询。是我错了。

oracle中支持查询字段的值可以与字段的类型不一致,所以考虑后端只定义一个string接收前端传来的数据,再在数据库中用or查询。这样更方便。如下:

//注意括号
<if test="dataIdOrName != null and dataIdOrName != '' ">
    and 

    (to_char(APP_DATA.ID) like concat(concat('%',#{dataIdOrName}),'%')

     or 

    APP_ITEM.NAME         like concat(concat('%',#{dataIdOrName}),'%'))
             
</if>

今天报了一个无效索引列的错误,但是语句语法都是对的,找了半天,结果是在sql语句中的注释引起的,删去注释,就不报错了

例如:

//上面一条是注释掉的语句,如果想执行第二条语句,需要直接删除上一条,这样注释后运行会报错
<if test="dataIdOrName != null and dataIdOrName != '' ">
--             and (to_char(APP_DATA.ID) like concat(concat('%',#{dataIdOrName}),'%') or APP_ITEM.NAME like concat(concat('%',#{dataIdOrName}),'%'))


             and (APP_ITEM.NAME like concat(concat('%',#{dataIdOrName}),'%'))
        </if>

但是我的思路,问了公司的前辈,前辈说可以用post请求方法,然后定义一个实体类,属性设置为需要接收的参数,利用requestbody注解,接收该实体类,这样参数都会被放到该类中,可以再获取该类的属性值,判断是哪种类型。json格式中,如果参数值为int或者long类型等,那么json格式为:"id" : 1。如果值为字符串,则json格式为:"name" :  "123"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值