mybatis注解@Select中添加判断条件<script>

@Select("<script>"
        + "select a.id, a.emp_name, a.emp_no,b.depart_name sys_org_code,c.post_name,c.post_name as post_mutex " +
        "        from ls_emp_info a left join sys_depart b on a.org_code = b.org_code " +
        "        left join ls_emp_post c on a.emp_no = c.emp_no " +
        "        <where>" +
        "            <if test=\"empInfo.empName != null and empInfo.empName != ''\"> " +
        "                a.emp_name like CONCAT('%',#{empInfo.empName},'%'), " +
        "            </if>" +
        "        </where>"
        + "</script>")
IPage<EmpInfo> getPage(Page<EmpInfo> page, QueryWrapper<EmpInfo> queryWrapper, @Param("empInfo") EmpInfo empInfo);
@Select({"<script>"
	+"select * from func_report_waste_crktj(#{startDate},#{endDate}) "
	+" where 1=1  "
	+"<when test= 'khbm!=null'> and khbm=#{khbm} </when>"
	+"<when test= 'lbbm!=null'> and lbbm=#{lbbm} </when>"
	+"<when test= 'djbm!=null'> and djbm=#{djbm} </when>"
	+"</script>"})
List<Map<String,Object>>  getWasteCrktjxxList(Map<String,Object> params);
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现 List<User> getUsersByIds(@Param("ids") List<Integer>ids) 方法,可以使用 MyBatis 的 foreach 标签来实现。具体实现步骤如下: 1. 在 SQL 语句使用 foreach 标签,循环遍历传入的 ids 参数,生成一个 IN 子句,查询多个 id 对应的用户信息。SQL 语句如下: ``` SELECT * FROM user WHERE id IN <foreach item='id' index='index' collection='ids' open='(' separator=',' close=')'> #{id} </foreach> ``` 2. 在接口方法上使用 @Select 注解,指定 SQL 语句。代码如下: ``` @Select("SELECT * FROM user WHERE id IN\n" + "<foreach item='id' index='index' collection='ids' open='(' separator=',' close=')'>\n" + " #{id}\n" + "</foreach>") List<User> getUsersByIds(@Param("ids") List<Integer> ids); ``` 3. 在调用方法时,传入一个 Integer 类型的列表,如 Arrays.asList(1, 2, 3),然后将其传入 getUsersByIds 方法。代码如下: ``` List<User> users = getUsersByIds(Arrays.asList(1, 2, 3)); ``` 这样就可以根据传入的 id 列表查询对应的用户信息了。注意,如果传入的 id 列表为空,生成的 SQL 语句会变成 "SELECT * FROM user WHERE id IN()",这样会导致 SQL 语法错误,需要在 foreach 标签添加一个判断,如果传入的列表为空,则返回一个空的 IN 子句。具体可以参考下面的代码: ``` @Select("<script>SELECT * FROM user WHERE 1=1\n" + "<if test=\"ids != null and ids.size()>0\">\n" + " AND id IN\n" + " <foreach item='id' index='index' collection='ids' open='(' separator=',' close=')'>\n" + " #{id}\n" + " </foreach>\n" + "</if>\n" + "</script>") List<User> getUsersByIds(@Param("ids") List<Integer> ids); ``` 这样就可以根据传入的 id 列表查询对应的用户信息了,而且还可以处理传入的 id 列表为空的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讓丄帝愛伱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值