Mybatis使用@Select注解sql中使用in问题

 更新时间:2023年05月26日 10:14:29   作者:wuzi_uzi  
这篇文章主要介绍了Mybatis使用@Select注解sql中使用in问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Mybatis使用@Select注解sql中使用in

mapper

@Select("SELECT  u.* , ur.role_id , r.role_name  from  sys_user_role  ur , sys_role r , sys_user u ,sys_user_depart ud " +
			"where  ur.role_id = r.id  and ur.user_id = u.id and u.id = ud.user_id " +
			"and ud.create_user_id in (${createUserId})")
	public Page<SysRoleDeptVO>  getUserByCreateUserIds(Page page, @Param("createUserId") String createUserId);

service

    @Override
    public Page<SysRoleDeptVO> getByUserIds(Page<SysRoleDeptVO> page, List<String> userIds) {
        /** 如果当前部门下没用户的话,就传个 ""  过去   由于 mybatis 解析后空字符串
         *  后是什么都没有, 这里用  in ()  如果这样,就会异常 ,所以当用户为空的话,
         *  传 "''"  这样解析后 变成了 in ('')
         * */
        String userids = "''" ;
        if(userIds != null && userIds.size() != 0){
            StringBuilder stringBuilder = new StringBuilder("");
            for (int i = 0; i < userIds.size(); i++) {
                stringBuilder.append("'");
                stringBuilder.append(userIds.get(i));
                stringBuilder.append("'");
                stringBuilder.append(",");
            }
            userids = stringBuilder.substring(0, stringBuilder.length() - 1);
        }
        return  userMapper.getByUserIds(page,userids);

mapper防止转义字符  

<![CDATA[      ]]> 

Mybatis在@Select写IN SQL

简单介绍在 MyBatis 的注解方式中,写包含 in 语法的 SQL

直接了断看下面的代码,SQL 是获取某几个 ID 的文章

@Select("<script>" +
            "select * from article where id in " +
            "<foreach item='item' index='index' collection='articleIds' open='(' separator=', ' close=')'>" +
                "#{item}" +
            "</foreach>" +
        "</script>")
List<Article> getArticlesByIds(@Param("articleIds") List<Long> articleIds);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java项目中classpath类路径是什么

    Java项目中classpath类路径是什么

    classpath指的是类路径,也就是编译之后的target文件夹下的WEB-INF/class文件夹,下面这篇文章主要给大家介绍了关于Java项目中classpath类路径是什么的相关资料,需要的朋友可以参考下
    2023-02-02
  • Spring的事件机制知识点详解及实例分析

    Spring的事件机制知识点详解及实例分析

    在本篇内容里小编给大家分享的是一篇关于Spring的事件机制知识点详解及实例分析,有需要的朋友么可以参考下。
    2021-12-12
  • jenkins中如何集成commander应用的完整步骤

    jenkins中如何集成commander应用的完整步骤

    jenkins是一个用java编写的开源的持续集成工具,在与oracle发生争执后,项目从hudson项目独立出来,下面这篇文章主要给大家介绍了关于jenkins中如何集成commander应用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • Java实现向数组里添加元素

    Java实现向数组里添加元素

    这篇文章主要介绍了Java实现向数组里添加元素方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 基于Java编写emoji表情处理工具类

    基于Java编写emoji表情处理工具类

    这篇文章主要为大家详细介绍了如何基于Java编写一个emoji表情处理工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • java中枚举的详细使用介绍

    java中枚举的详细使用介绍

    本篇文章介绍了,在java中枚举的详细使用。需要的朋友参考下
    2013-04-04
  • Java二叉树中LCA问题解决方法两则

    Java二叉树中LCA问题解决方法两则

    这篇文章主要介绍了Java二叉树中LCA问题解决方法,总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路
    2022-12-12
  • Java8新特性之lambda的作用_动力节点Java学院整理

    Java8新特性之lambda的作用_动力节点Java学院整理

    我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值。现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作解开lambda最强作用的神秘面纱。
    2017-06-06
  • Java全面讲解顺序表与链表的使用

    Java全面讲解顺序表与链表的使用

    大家好,今天给大家带来的是顺序表和链表,我觉得顺序表还是有比较难理解的地方的,于是我就把这一块的内容全部整理到了一起,希望能够给刚刚进行学习数据结构的人带来一些帮助,或者是已经学过这块的朋友们带来更深的理解,我们现在就开始吧
    2022-05-05
  • Java中结束循环的方法

    Java中结束循环的方法

    这篇文章主要介绍了Java中结束循环的方法,文中有段代码在return,结束了整个main方法,即使输出hello world的语句位于循环体外,也不会被执行,对java结束循环方法感兴趣的朋友跟随小编一起看看吧
    2023-06-06

最新评论