@many一对多---------解决一向多中主查询的数据库中没有的字段传递给子函数的问题

@many一对多---------解决一向多(主查询传递给子查询参数为两个)

方法运用场景

主函数传递参数给子查询进行条件查找

方法简述

将变量参数转化为动态列,通过常用列传值方法传入

主查询

@Mapper---------------主查询和子查询都要打上注解Mapper,才可以映射过去
@Select("<script>"
+ "SELECT user_id "
+ "CASE "
+ "WHEN (#{userName} = '' or #{userName} is null) "
+ "THEN NULL "
+ "ELSE #{userName} END AS user_name"---------------------核心语句,注意这边是=不是==
+ "FROM sys_user  "
+ "</script>")
@Results({
@Result(column = "{userName=user_name,userId=user_id}", property = "userList", javaType = List.class,
many = @Many(select = "com.dao.xxxDao.searchXxxByName"))--------------------------property是查询返回映射到DTO里面的变量,在column里面放置传到查多语句中的参数userName,userId
})
List<XxxDto> searchXxx(@Param("userName") String userName);---------传递过去的参数

子查询

@Mapper
@Select("<script>"
+ "SELECT * "
+ "FROM sys_detail "
+ "<if test=\"userId!=null \"> "
+ "AND user_id =#{userId} "
+ "</if> "
+ "<if test=\"userName!=null and userName!=\'\' \"> "
+ "AND user_name=#{userName} "
+ "</if> "
+ "</script>")
List<SysDetail> searchXxxByName(Map<String, String> param);------对应的参数一定要是Mapper

程序猿

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值