mybatis plus in方法使用说明

如果是List类型的String,例如:List<String>这种类型的,就直接放值就可以了,本文讲的是当你查询到的是一个list集合如何遍历取值,否则要写sql和接口就显得很麻烦。

步骤如下:

//查询到list集合
List<User> userList = userService.selectById(id);
//结果集
List<String> resultList = new ArrayList<>();
//遍历集合取值
 userList .forEach(item->{
   resultList.add(item.getYouNeedId());
 });
 //条件构造器in上手使用
 QueryWrapper<User> qw = new QueryWrapper<>();
 qw.in("you_need_id", resultList);
 //这里有个分页的查询,你也可以不用分页,用mybatisplus里面封装的其他方法
 IPage<User> userIPage = userMapper.selectPage(page, qw);
 //返回查询结果,getRecords也是mybatisplus里面封装的方法
 return contractRecordIPage.getRecords();

补充知识:Mybatis plus中使用in查询出错是怎么回事

我的情况是这样的,在使用mybatis plus提供的QueryWrapper方法里的in查询时,我的参数为类似“1,2,3,4”这样的字符串

//要查的参数
String masterIds = "81554,5654,55948,48945";

QueryWrapper<FpjyPauperInfo> pauperqw = new QueryWrapper<>();
pauperqw.in("user_id",masterIds);
UserInfoService.list(pauperqw);

结果返回的数据与在数据库查出来的数据不一样(这是我的情况,不知道你们会不会这样),我看了控制台的sql代码

==> Preparing:SELECT user_id,user_name,update_job_dt,group_name,create_dt,create_by,
update_dt,update_by FROM fpjy_pauper_info WHERE (user_id IN (?))
==> Parameters: 81554,5654,55948,48945(String)
<==   Total: 0

查询错误原因

我就在网上早了一下发现,在使用mybatis plus提供的QueryWrapper方法时,你给它的参数是String类型时,在控制台上看着是对的,但是他会默认在参数的前面和后面加上单引号,因为在mybatis plus里的xml配置文件里(类似于UserInfoMapper.xml的文件),给的参数是用 #{参数名} 的方式

//这段代码只是举个例子

SELECT * FROM userinfo WHERE (user_id IN (#{ids}))

解决方法

这只是我这种情况的解决方法哦

一、找到你要使用的对象的xml文件(类似于UserInfoMapper.xml的文件)在里面自定义sql语句代码,给参数要用 ${参数名} 的方式,不会自定义sql语句可以去网上查查,网上有太多了,在这里我就不写了。

//这段代码只是举个例子

SELECT * FROM userinfo WHERE (user_id IN (${ids}))

控制台sql语句输出结果

==> Preparing:SELECT * FROM fpjy_pauper_info WHERE (user_id IN (81554,5654,55948,48945))
==> Parameters:
<==   Total: 4

二、QueryWrapper方法里的in查询时,入参不能是字符串,改成一个数组

以上这篇mybatis plus in方法使用说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MyBatis-Plus代码生成器的使用详解

    1.引入依赖 <!--mybatisplus依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version> </dependency> <!--代码生成模板--> <dependency>

  • MyBatis-Plus 通用IService使用详解

    一.引言 MP除了通用的Mapper还是通用的Servcie层,这也减少了相对应的代码工作量,把通用的接口提取到公共.其实按照MP的这种思想,可以自己也实现一些通用的Controller. 今天是周天,作为一名码农来说,这里小编提醒大家周末有空还是多出去运动一下. 生命在于运动,生命诚可贵. 二. 小编瞎扯 相信有和小编一样的朋友,在大城市独自漂泊,感觉就凭借自己内心那一点点的火苗,想要燃烧起来. 小编在上海这些年,不慌也不忙,从开始每天厌恶工作,到现在开开心心的上班,回顾自己的成长除了存款,其

  • Spring Boot环境下Mybatis Plus的快速应用操作

    一.简介 Mybatis-Plus(简称MP)是一个 Mybatis 的一个增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.其愿景是成为Mybatis最好的搭档,将开发效率翻倍,由于受到学习研究深入限制,本例只进行Mybatis Plus在Spring Boot环境下的基本应用(如Select.Insert.Update.Delete等基本操作,其中还包括动态生成组合查询与更新的动态SQL语句). 特性: 无侵入:Mybatis-Plus 在 Mybatis 的

  • Mybatis或Mybatis-Plus框架的xml文件中特殊符号的使用详解

    在Mybatis的xml文件中,很多特殊符号是无法直接使用的,需要使用实体引用,假如在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始. 原符号.实体引用.CDATA对照表 号.实体引用.CDATA对照表 原符号 实体引用 CDATA 说明 < < <![CDATA[ < ]]> 小于 <= <= <![CDATA[ <= ]]> 小于等于 > >

  • mybatis plus in方法使用说明

    如果是List类型的String,例如:List<String>这种类型的,就直接放值就可以了,本文讲的是当你查询到的是一个list集合如何遍历取值,否则要写sql和接口就显得很麻烦. 步骤如下: //查询到list集合 List<User> userList = userService.selectById(id); //结果集 List<String> resultList = new ArrayList<>(); //遍历集合取值 userList .

  • 基于MyBatis XML配置方法(全面了解)

    MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息. 文档的顶层结构如下: configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器 objectFactory 对象工厂 plugins 插件 environments 环境 environment 环境变量 transactionManager 事务管理器 dataSourc

  • mybatis generator 使用方法教程(生成带注释的实体类)

    引言: 最近的一个项目,由于数据库表巨多,导致需要创建N多个java实体.dao.mapper.xml映射文件,如果均使用纯手工编写,无疑需要耗费大量时间和精力.于是上网学习了mybatis generator的使用. 现在项目写完了,闲暇之余把干货奉上,供大家直接使用. 需求场景: 当你的java 项目数据库有N张表需要使用mybatis进行数据库操作时,建议使用mybatis generator 自动生成工具.可以自动帮助你生成java实体类.dao.mapper.xml等. 首先给大家分享

  • 模拟Mybatis的实现方法

    所需要用到的其他工具或技术: 项目管理工具 : Maven 测试运行工具 : Junit 数据库 : Derby XML操作工具:Dom4j 继续不废话 Maven Dependencies: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</sc

  • 详解Spring Boot中MyBatis的使用方法

    orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动态sql的mybatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用.发现一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis. hibernate特点就是所有的sql都用Java代码来生成,不用跳出程序去写(看)sql,有着编程的完整性,发展到最顶端就是spring data jpa这种模式了,基本上根据

  • springboot快速整合Mybatis组件的方法(推荐)

    Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 原有Spring优缺点分析 Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,

  • 详解Spring与Mybatis的整合方法(基于Eclipse的搭建)

    项目工程总览: 项目路径建的包不是唯一,只要之后配置的路径映射正确即可 Emp.java <properties> <spring.version>5.1.5.RELEASE</spring.version> <mybatis.version>3.4.6</mybatis.version> <log4j.version>1.2.17</log4j.version> </properties> <depen

  • mybatis plus in方法使用详解

    如果是List类型的String,例如:List<String>这种类型的,就直接放值就可以了,本文讲的是当你查询到的是一个list集合如何遍历取值,否则要写sql和接口就显得很麻烦. 步骤如下: //查询到list集合 List<User> userList = userService.selectById(id); //结果集 List<String> resultList = new ArrayList<>(); //遍历集合取值 userList .

  • 解析Mybatis的insert方法返回数字-2147482646的解决

    前言:前几天在做项目demo的时候,发现有一个很奇怪的现象,就是MyBatis发现更新和插入返回值一直为"-2147482646".无论怎么改,这个值一直不变...是在摸不着头脑,百度和谷歌了一下,有这样的说法原来是由defaultExecutorType设置引起的,如果设置为BATCH,更新返回值就会丢失. If the BATCH executor is in use, the update counts are being lost. 操作:也就是说在spring的配置文件中,只

  • MyBatis CodeHelperPro激活方法详细教程

    MybatisCodeHelperPro是一款功能强大的插件,可以让IDEA使用Mybatis,帮助用户轻松进行各种程序的编程,提高工作效率,让代码编写更加便捷. 之前给大家介绍过MyBatisCodeHelper-Pro插件破解版详细教程[2.8.2] 插件下载地址 链接: https://pan.baidu.com/s/1bufFKaE3D9vpoQXjhvysyA 提取码: 9pdb 下载完成后解压 在IDEA中本地安装插件 File > Settings >Plugins 找到刚才的解

随机推荐