06.动态SQL和foreach

动态sql:

映射文件代码:

 1  <!-- 动态sql,根据名字和年龄查询,where标签会处理第一个and,其他位置的and不会自动处理 -->
 2   <select id="queryStudentByNameAndAge" parameterType="student" resultMap="student1">
 3     select * from student 
 4     <!-- 1.使用where 1=1 ,避免where后直接跟and -->
 5      <!-- 2.使用where关键字,避免where后直接跟and -->
 6     <where>
 7         <if test="sname != null and sname != '' ">
 8             and sname = #{sname}
 9         </if>
10         <if test="age != null and age != '' ">
11             and age = #{age}
12         </if>
13     </where>
14   </select>

foreach循环属性集合:

映射文件:

  <!-- foreach循环属性集合--><select id="queryStudentsByHomeAddress" parameterType="Home" resultMap="student1">select * from student <where><if test="homeAddress != null and homeAddress != '' "><!-- colleaction是属性中的集合,item是遍历出来的每个元素,open是循环结果前边的东西,close是循环结果后边要加的东西,separator是循环结果用什么符号分隔 --><foreach collection="homeAddress" item="homeAr" open=" and homeaddress in (" close=" )" separator=",">#{homeAr}            </foreach></if>    </where></select>

测试类:

1  Home home = new Home();
2  List<String> homeAddress = new ArrayList<String>();
3  homeAddress.add("北京");
4  homeAddress.add("南京");
5  home.setHomeAddress(homeAddress);
6  List<Student> stu = studentMapper.queryStudentsByHomeAddress(home);

foreach循环集合:

映射文件:(需要注意的是循环要循环list)

 1  <!-- foreach循环集合-->
 2   <select id="queryStudentsWithList" parameterType="list" resultMap="student1">
 3     select * from student 
 4     <where>
 5     <!-- 必须写list -->
 6     <if test="list != null and list != '' ">
 7         <foreach collection="list" item="homeAr" open=" and homeaddress in (" close=" )" separator=",">
 8             #{homeAr}            
 9         </foreach>
10     </if>    
11     </where>
12   </select>

测试类:

1 List<String> list = new ArrayList<String>();
2 list.add("北京");
3 list.add("南京");
4 List<Student> stu = studentMapper.queryStudentsWithList(list);

foreach循环数组:

映射文件:(注意循环必须都写array,输入参数不是简单类型时都写Object[])

 1  <!-- foreach循环数组-->
 2   <select id="queryStudentsWithArray" parameterType="Object[]" resultMap="student1">
 3     select * from student 
 4     <where>
 5     <!-- 必须写array -->
 6     <if test="array != null and array != '' ">
 7         <foreach collection="array" item="homeAr" open=" and homeaddress in (" close=" )" separator=",">
 8             #{homeAr}            
 9         </foreach>
10     </if>    
11     </where>
12   </select>

测试类:

1 String[] str = {"北京","南京"};
2 List<Student> stu = studentMapper.queryStudentsWithArray(str);

foreach循环对象数组:

映射文件:(需要注意的是这时的item要写循环出来的对象了,不能瞎写名字了,然后通过对象点的方式获取值)

 1 <!-- foreach循环对象数组-->
 2   <select id="queryStudentsWithObjectArray" parameterType="Object[]" resultMap="student1">
 3     select * from student 
 4     <where>
 5     <!-- 必须写array -->
 6     <if test="array != null and array != '' ">
 7      <!-- item里边写的是循环出来的对象 -->
 8         <foreach collection="array" item="address" open=" and homeaddress in (" close=" )" separator=",">
 9             <!-- 对象点属性获取值 -->
10             #{address.homeAddress}            
11         </foreach>
12     </if>    
13     </where>
14   </select>

测试类:

1 Address addr1 = new Address();
2 addr1.setHomeAddress("北京");
3 Address addr2 = new Address();
4 addr2.setHomeAddress("南京");
5 Address[] address = {addr1,addr2};
6 List<Student> s = studentMapper.queryStudentsWithObjectArray(address);

 

转载于:https://www.cnblogs.com/man-tou/p/11343800.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习理论基础到底有多可靠?

来源&#xff1a;机器学习算法与Python实战选自&#xff1a;aidancooper.co.uk 作者&#xff1a;Aidan Cooper编译&#xff1a;机器之心 知其然&#xff0c;知其所以然。机器学习领域近年的发展非常迅速&#xff0c;然而我们对机器学习理论的理解还很有限&#xff0c;有些模型…

07.MyBatis中的关联查询

关联查询&#xff1a; 一对一&#xff1a; 两种方式实现: 1.通过业务扩展的方式进行一对一查询&#xff0c;新建一个实体类&#xff0c;继承其中属性多的一个&#xff0c;然后写上另一个类中的属性&#xff1a; 实体类: 映射文件: 1 <!-- 业务扩展的方式进行一对一查询&…

黄仁勋回应放弃收购Arm:公司战略并没有太大改变

来源&#xff1a;网易智能2月21日消息&#xff0c;芯片巨头英伟达不久前公布了2022财年第四财季财报&#xff0c;显示其营收较上年同期猛增53%&#xff0c;游戏、数据中心和专业可视化市场平台也都实现了创纪录的收入。财报发布后&#xff0c;该公司首席执行官黄仁勋接受美国科…

20190423面试记录

1&#xff09;apply&#xff0c;call&#xff0c;bind的区别 &#xff1f; 应用场景&#xff1a;用于改变this的指向 apply接收两个参数&#xff0c;第一个函数this将指向的对象&#xff0c;第二个是数组函数接收的参数 call接收多个参数&#xff0c;第一个函数this将指向的对象…

无生命的AI算不上「智能」

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;王强策划&#xff1a;刘燕什么是智能&#xff1f;以非常快的速度解决复杂的数学问题就算智能吗&#xff1f;在国际象棋中击败世界冠军的力量算智能吗&#xff1f;分辨图像中数千个不同对象的能力算智能吗&am…

08.MyBatis整合Log4j

MyBatis整合Log4j&#xff1a; 1.导入log4j.jar 2.在conf.xml中开启日志文件: 1 <!-- 配置日志文件 --> 2 <settings> 3 <setting name"logImpl" value"LOG4J"/> 4 </settings> 如果不指定,MyBatis就会根据一下顺…

MySQL 练习 创建表格2

|--需求说明 #实践课&#xff0c;使用SQL语句创建成绩表#要求&#xff1a;在数据库myschool中&#xff0c;使用SQL语句创建成绩表result&#xff0c;result的结构表见书上 |--实现思路 采用创建表的语句完成 |--代码内容 #实践课&#xff0c;使用SQL语句创建成绩表 #要求&#…

前沿速递:因果涌现在多种因果衡量标准下普遍存在

来源&#xff1a; 集智俱乐部作者&#xff1a;陈昊编辑&#xff1a;邓一雪导语因果涌现理论指出&#xff0c;在宏观尺度下观察复杂系统可以减少因果关系中的噪声&#xff0c;从而得到具有更强因果关联的系统。目前该理论已经在有效信息和整合信息的因果度量标准下得到的验证&am…

JavaScript每日学习日记(2)

8.13.2019 1. 正则表达式常见字符串方法&#xff1a; search( ) , replace( ) var str "Visit Website"; var n str.search(/website /i); var str "Visit Microsoft!"; var res str.replace("Microsoft", " Website "); 2. 如果未…

类脑计算的一大突破 BrainScaleS-2

来源&#xff1a;混沌巡洋舰今天最成功的人工智能算法&#xff0c;人工神经网络&#xff0c;是基于我们大脑中错综复杂的真实神经网络。但与我们高效的大脑不同的是&#xff0c;在计算机上运行这些算法消耗了惊人的能量: 最大型的模型在训练全过程中消耗的能量几乎相当于五辆汽…

委托、Lambda表达式、事件系列07,使用EventHandler委托

谈到事件注册&#xff0c;EventHandler是最常用的。 EventHandler是一个委托&#xff0c;接收2个形参。sender是指事件的发起者&#xff0c;e代表事件参数。 □ 使用EventHandler实现猜拳游戏 使用EventHandler实现一个猜拳游戏&#xff0c;每次出拳&#xff0c;出剪刀、石头、…

2022年国家自然科学基金指南发布情况

来源&#xff1a;锐动源编辑部近日&#xff0c;2022年国家自然科学基金部分项目申报指南已陆续发布。据不完全统计&#xff0c;截至目前2022年国家自然科学基金已发布32个项目的申报指南&#xff0c;其中“国家自然科学基金委员会与日本学术振兴会合作与交流项目”已发布获资助…

最简单概率论的五个智慧

来源 &#xff1a;罗辑思维在我认为人人都应该学一些概率知识&#xff0c;它现在是公民的必备知识。现在的世界比过去复杂得多&#xff0c;其中有大量不确定性&#xff0c;是否理解概率&#xff0c;直接决定一个人的开化程度。01随机&#xff1a;有些事情是无缘无故地发生的这个…

谷歌AI一次注释了10%的已知蛋白质序列,超过人类十年研究成果

来源&#xff1a;ScienceAI编辑 &#xff1a;泽南、张倩和 AlphaFold 不同&#xff0c;这次谷歌探索的是用深度学习给蛋白质打上功能标签。蛋白质是组成人体一切细胞、组织的重要成分。机体所有重要的组成部分都需要有蛋白质的参与。目前已知存在的蛋白质种类有数十亿&#xff…

20190808面试记录

Angular的核心&#xff1f; 组件&#xff0c;指令&#xff0c;服务&#xff0c;依赖注入 性能优化&#xff1f; 1、减少http请求&#xff08;图片压缩合并&#xff0c;css压缩合并&#xff0c;js文件压缩合并&#xff09; 2、检查是否有重定向问题 3、检查是否一个列表有多次请…

你真的了解计算生物学和AI for Science吗?

来源&#xff1a;量子位Q1&#xff1a;AlphaFold2的最大意义是什么&#xff1f;A1&#xff1a;这个看似突破性的进展&#xff0c;其实是技术演进的必然结果。 此外&#xff0c;如果我们换个视角来看待这个问题&#xff0c;蛋白质结构预测仅仅是计算生物学这个大门类里面一个相对…

excel字符串反转

1.新建空白sheet2.altf11调出VB3.插入-模块-填入自定义函数Function REVERSE(Str As String)REVERSE StrReverse(Str)End Function 转载于:https://www.cnblogs.com/AWNUygah/p/11350843.html

Stephen Wolfram专访Judea Pearl:从贝叶斯网络到元胞自动机

来源&#xff1a; 集智俱乐部编译&#xff1a;闫和东、徐培 编辑&#xff1a;邓一雪 导语2022年人工智能与数学国际研讨会&#xff08;ISAIM 2022&#xff09;恰逢著名计算机科学家、贝叶斯网络之父 Judea Pearl 85岁生日&#xff0c;会议期间Mathematica创始人 Stephen Wolfra…

excel常用函数

1.截取字符串函数 left&#xff08;&#xff09;   从左边截取 mid()    从中间截取 right()    从右边截取 转载于:https://www.cnblogs.com/AWNUygah/p/11350904.html

day32 并发编程之锁

并发编程之锁 1. GIL全局解释器锁 2. GIL与普通的互斥锁 3. 死锁 4. 信号量 5. event事件 6. 线程q 1. GIL全局解释器锁 """ In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytec…