/*** 按User表中platform查询User*/@Select("select * from user where pid = #{id}")List
需要传入一个参数 -> 即使用表中id 可自动带入进行一对多查询
@中 = “id”
表示把父查询中id列每个值传递给子查询进行一对多查询
解决方案
表:购物车 主要包含商家id字段 , 商品id及信息 , 顾客id等等
为了某个顾客显示先购物车中商家 , 再显示商家中商品 , 需要传入一个顾客id
查询商家需要顾客id作为查询条件,查询商品需要商家id和顾客id两个条件
如果按以上的方法 , (商家表中没有顾客id)无法传递顾客参数
(假设仅传递一个商家id参数的话 , 子查询两个参数都会被设定为商家id值进行查询)
思路:把顾客id放进查询中保存起来 , 并给他取一个别名
这样之后 , 顾客id即可传递给子查询
/*** 按顾客id查询其购物车(商家->商品 一对多查询)* @param consumerId 顾客id* @return 购物车商品列表*/@Select("select distinct saler.id,saler.shopname,#{consumerId} as consumerId from shoppingcart \n" +"join saler on saler.id = shoppingcart.salerId \n" +"where consumerId = #{consumerId}")@Results(@Result(property = "goods",column = "{salerId = id,consumerId = consumerId}",many = @Many(select = "cn.datacharm.springbootvuecli.dao.CartMapper.findGoodsBySalerId")))List> findCartById(Integer consumerId);@Select("select \n" +"sid,consumerId,productName,price,photo,\n" +"shoppingcart.salerId,\n" +"shoppingcart.productId,\n" +"shoppingcart.amount\n" +"from shoppingcart\n" +"join saler_inventory on shoppingcart.salerId = saler_inventory.salerId\n" +"and shoppingcart.productId = saler_inventory.productId\n" +"where shoppingcart.salerId = #{salerId}\n"+"and consumerId = #{consumerId}" )List
三、出现:无效的列类型: 1111 错误
在使用时 , 不同的xml配置文件 , 有的会提示:无效的列类型: 1111
比如这个sql:
update base.sys_person tset t.rybh=#{rybh},t.xm=#{xm},t.ryzt=#{ryzt},t.sfzhm=#{sfzhm},t.xb=#{xb},t.sj=#{sj},t.yx=#{yx},t.jtzz=#{jtzz},t.bz=#{bz},t.csrq=#{csrq}where t.ryid=#{ryid}
在csrq有值时不会报错 , csrq为空时会报上述错误:
原因时什么呢?官方文档显示:
这句话的意思是 , 如果对一个属性字段 , 需要传递null值 , (尤其是Date , int等类型时) , 是必要的 。(我觉得为了不出错 , 每个字段都写也是可以的) 。
那好 , 根据上述文字修改:
update base.sys_person tset t.rybh=#{rybh},t.xm=#{xm},t.ryzt=#{ryzt},t.sfzhm=#{sfzhm},t.xb=#{xb},t.sj=#{sj},t.yx=#{yx},t.jtzz=#{jtzz},t.bz=#{bz},t.csrq=#{csrq,jdbcType=TIMESTAMP}where t.ryid=#{ryid}
问题解决 。
- 全球200多个国家PM2.5暴露浓度面板数据
- 尚未完结 3、Mybatis 缓存问题
- 每个节点有0个或多个子节点;没有父节点的节点称为根节点,每一
- 史上最荒的皇帝:纵欲无度一夜宠幸30多个妃子
- 高效的微信管理系统,助你轻松一人管理多个账号
- 娶了一万多个老婆的司马炎如何幸福生活
- 世上最深地下古城,挖了18层,85米深,连通200多个小地下城 中国之最地下酒店
- 用5000多个鸡蛋,打造出世界最大的煎蛋,被纳入吉尼斯纪录! 吉尼斯记录做早餐
- 火车票票价
- 一觉醒来,国内传来4大好消息,外媒:中国发展速度太快了! 中国获得多个世界之最