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  getUserByCreateUserIds(Page page, @Param("createUserId") String createUserId);

service

    @Override
    public Page getByUserIds(Page page, List 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  防止转义字符  

  

你可能感兴趣的:(数据库,mybatis)