软件编程
位置:首页>> 软件编程>> java编程>> Mybatis使用@Select注解sql中使用in问题

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

作者:wuzi_uzi  发布时间:2023-01-06 20:52:48 

标签: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);

来源:https://blog.csdn.net/qq_37739437/article/details/117595157

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com