首页 > 数据库 >java MySQL的in查询两个字段同时相等的多个数据查询

java MySQL的in查询两个字段同时相等的多个数据查询

时间:2024-05-11 23:30:29浏览次数:37  
标签:java name address list 查询 MySQL put id select

在Java中想进行下面的查询,不想写循环一条条查

select id,name,address,age  from users where name='A'  and  address='addr1'

select id,name,address,age  from users where name='B'  and  address='addr2'

select id,name,address,age  from users where name='C'  and  address='addr3'

查了下,in可以使用在多个字段上

select id,name,address,age  from users where (name,address) in(('A','addr1'),('B','addr2'),('C','addr3'))

在Java中

1.构建条件

List<Map<String, String>> list = new ArrayList<>();  
// 创建一个新的Map对象  
Map<String, String> map1 = new HashMap<>();  
map1.put("name", "A");  
 map1.put("address", "addr1");  
list.add(map1);  
Map<String, String> map2= new HashMap<>();  
map2.put("name", "B");  
 map2.put("address", "addr2");  
list.add(map2);  
Map<String, String> map3= new HashMap<>();  
map3.put("name", "C");  
 map3.put("address", "addr3");  
list.add(map3);  

2.mapper接口定义

List<Map<String,Object>> getInfos(@Param("list")List<String> list);

3.mapper XML

<select id="getInfos" resultType="java.util.HashMap">
        select id,name,address,age
        from `users`
        where (name,address) in
        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
            (#{item.name},#{item.address})
        </foreach>
</select>

这样就可以一次查询出来了

 

标签:java,name,address,list,查询,MySQL,put,id,select
From: https://www.cnblogs.com/baby123/p/18187365

相关文章

  • 贝壳面试:MySQL联合索引,最左匹配原则是什么?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • ClickHouse 高性能网关组件 查询优化
    ClickHouse进阶|如何自研一款企业级高性能网关组件?https://mp.weixin.qq.com/s/UFTtlD2KQH9e_Y91sEF5xAClickHouse查询优化详细介绍https://mp.weixin.qq.com/s/38RMVbw25P3iuE4IIuxdogClickHouse进阶|性能提升20倍!深度解析Projection优化实践https://mp.weixin.qq.com/s/EMzd......
  • Java父子类方法调用
    判定首先使用“instanceof”来判定在new了某个项目后两个类型之间的父子关系调用父类或子类方法首先明确两个项目的继承关系,同时执行父让子的原则,当两者方法名重复时,优先执行子类方法。当new父类所定义的变量名要使用子类的方法时(父类中没有该方法)要用括号将子类项目名括住......
  • MySQL中的一些其他比较符
    一、在两者之间(可以看成数学中的闭区间)BETWEEN...AND...在两个值之间(包含)SELECTLAST_NAME,SALARYFROMemployeesWHERESALARYBETWEEN3500AND6000;二、匹配一个任意值列表IN(set)使用该关键字之后会给定一个列表,所取的值都在这个列表中间,在查询数据的时候,会对这个set中......
  • Java-线程-并发解决方案
    0.背景在[Java-线程-并发]这篇文章中,我们引入了并发场景下的一些问题,并在末尾给出了几种常见的解决方案。1.方案1.1synchronizedsynchronized是Java中的一个关键字,用于提供同步机制,保证多线程环境下对共享资源的安全访问。通过使用synchronized,Java虚拟机(JVM)保证同一时......
  • Beego-Orm-关联查询
    packagemodelsimport"github.com/beego/beego/v2/client/orm"typeCustomerstruct{Idint`orm:"pk;auto""`UserNamestringSexstring`orm:"size(5)"`Mobilestring`orm:"size(11)"`Ord......
  • ETLCloud中如何执行Java Bean脚本
    ETLCloud中如何执行Java Bean脚本在ETLCloud这一强大的数据集成和转换平台中,执行Java Bean脚本的能力为其增添了更多的灵活性和扩展性。Java Bean脚本不仅仅是一段简单的代码,而是一种强大的工具,可以帮助用户定制和优化数据处理的每一个环节。为了充分利用这一功能,您需要编写......
  • JAVA开发使用@JsonFormat注解,日期比实际日期少一天问题
    前言最近同事反馈一个问题,说是日期保存后未发生变化。刚开始以为是字段未对应或者是未保存成功,当我去进行排查的时候发现,发现数据保存没有问题。奇了怪了。问题现象库里日期数据保存正确,但是后台返回前台页面发现不正确。排查过程刚开始怀疑是数据未保存成功,经过测试发现数据......
  • mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nona
    官方解释:ONLY_FULL_GROUP_BY是MySQL数据库提供的一个sql_mode,通过这个sql_mode来保证,SQL语句“分组求最值”合法性的检查.这种模式采用了与Oracle、DB2等数据库的处理方式。即不允许selecttargetlist中出现语义不明确的列.对于用到GROUPBY的select语句,查出......
  • JAVA LIST按照指定字段去重重复
    JAVAList按照指定字段去重重复List<TalentPlanStudentEntity>studentList=relatePlanStudentList.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection( ()->newTreeSet<>(Comparator.comparing(TalentPlanStudentEntity::getUserId......