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);

总结

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

相关文章

  • SpringBoot实现事件监听(异步执行)的示例代码

    SpringBoot实现事件监听(异步执行)的示例代码

    事件监听是一种机制,可以定义和触发自定义的事件,以及在应用程序中注册监听器来响应这些事件,本文主要介绍了SpringBoot实现事件监听(异步执行)的示例代码,感兴趣的可以了解一下
    2024-08-08
  • Java中SpringBoot的@Transactional原理

    Java中SpringBoot的@Transactional原理

    这篇文章主要介绍了Java中SpringBoot的@Transactional原理,面向元数据遍历已经成为越来越多开发者的偏好,因此原理从Springboot的EnableTransactionManagement注解说起,需要的朋友可以参考下
    2023-07-07
  • SpringBoot+SpringBatch+Quartz整合定时批量任务方式

    SpringBoot+SpringBatch+Quartz整合定时批量任务方式

    这篇文章主要介绍了SpringBoot+SpringBatch+Quartz整合定时批量任务方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • tdesign的文件上传功能实现(微信小程序+idea的springboot)

    tdesign的文件上传功能实现(微信小程序+idea的springboot)

    这篇文章主要介绍了tdesign的文件上传(微信小程序+idea的springboot)的相关知识,本文通过图文实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-09-09
  • 利用反射实现Excel和CSV 转换为Java对象功能

    利用反射实现Excel和CSV 转换为Java对象功能

    将Excel或CSV文件转换为Java对象(POJO)以及将Java对象转换为Excel或CSV文件可能是一个复杂的过程,但如果使用正确的工具和技术,这个过程就会变得十分简单,在本文中,我们将了解如何利用一个Java反射的库来实现这个功能,需要的朋友可以参考下
    2023-11-11
  • springboot项目如何引用公共模块的bean

    springboot项目如何引用公共模块的bean

    这篇文章主要介绍了springboot项目如何引用公共模块的bean问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java GZIPOutputStream流压缩文件的操作

    Java GZIPOutputStream流压缩文件的操作

    这篇文章主要介绍了Java GZIPOutputStream流压缩文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot项目集成Flyway进行数据库版本控制的详细教程

    SpringBoot项目集成Flyway进行数据库版本控制的详细教程

    这篇文章主要介绍了SpringBoot项目集成Flyway进行数据库版本控制,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java设计模式之工厂模式实现方法详解

    Java设计模式之工厂模式实现方法详解

    这篇文章主要介绍了Java设计模式之工厂模式实现方法,结合实例形式较为详细的分析了工厂模式的分类、原理、实现方法与相关注意事项,需要的朋友可以参考下
    2017-12-12
  • java基础中异常及包归纳整理

    java基础中异常及包归纳整理

    这篇文章主要介绍了java基础中的 异常与包,有需要的朋友可以参考一下
    2017-04-04

最新评论