目录

  • 一、 -if
  • 二、 -where
  • 三、 -foreach
  • 扩展:sql语句很多重复怎么办?

一、 -if

当你要查询的参数不确定时:参数可能只有username或者password或者有多个甚至什么都没有

test 类

    @Testpublic void testFindByCondition(){User u=new User();u.setUsername("醉人");List<User> users=userMapping.findUserByCondition(u);for (User user:users){System.out.println(user);}}

mapping.xml(大小写、名称一致很重要)

    <!--根据条件查询--><select id="findUserByCondition" resultType="domain.User">select *from user where 1=1/*username应该与实体表中的名字一致,包括大小写*/<if test="username!=null">/*#{username} 应该与实体表中的名字一致,包括大小写*/and username=#{username}</if><if test="id!=null">and id =#{id}</if></select>

二、 -where

    <select id="findUserByCondition" resultType="domain.User">select *from user<where><if test="username!=null">and username=#{username}</if><if test="id!=null">and id=#{id}</if></where></select>

用 where 的话比只有 if 的 sql 语句更简洁

三、 -foreach

select *from user where id in(1,2)

    <select id="findUserInIds" resultType="domain.User">select *from user<where><if test="list !=null and list.size()>0"><foreach collection="list" item="item" open="and id in(" close=")" separator=",">#{item}</foreach></if></where></select>
    @Testpublic void testFindUserInIds(){ArrayList<Integer> list=new ArrayList<Integer>();list.add(1);list.add(2);List<User> users=userMapping.findUserInIds(list);for (User user:users){System.out.println(user);}}

扩展:sql语句很多重复怎么办?

    <sql id="defaultUser">select *from user</sql>

调用

注意:如果后面还要添加语句,上面的 sql 语句后面不要添加分号

    <select id="findAll" resultType="domain.User"><include refid="defaultUser"/>/*select *from user;*/</select>

转载于:https://www.cnblogs.com/zuiren/p/11406127.html

10-动态SQL语句相关推荐

  1. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  2. oracle不使用游标,oracle – 为什么我们不能在动态SQL语句中使用强引用游标?

    这是一个带有强类型引用游标的过程: SQL> create or replace procedure p1 is 2 type dept_rc is ref cursor return dept ...

  3. 存储过程中执行动态Sql语句

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...

  4. oracle怎么优化动态sql语句,oracle动态sql语句处理

    动态SQL语句处理:根据要处理的sql语句的作用不同,可以使用三种不同类型的动态sql方法:使用execute immediate语句可以处理包括ddl(create.alter和drop).DCL( ...

  5. xml模糊查询语句_2Mybatis学习笔记07:动态SQL语句(原创,转载请注明来源)

    开发环境: 硬件环境:Windows10+JDK 1.8: 软件环境:Java+Eclipse+Mybatis+maven3.6+tomcat8.0+Postgresql 10.6: 用到的jar包: ...

  6. 使用Oracle的DBMS_SQL包执行动态SQL语句

    引用自:http://blog.csdn.net/ggjjzhzz/archive/2005/10/17/507880.aspx 在某些场合下,存储过程或触发器里的SQL语句需要动态生成.Oracle ...

  7. Oracle 动态游标 PL/SQL 动态SQL语句 open for [using] 语句

    PL/SQL:open for [using] 语句 2017年07月19日 09:52:55 学孩儿无牙哭做粥 阅读数:681 标签: oracleSQLPLSQL 更多 个人分类: ORACLES ...

  8. 浅析PowerBuilder下动态SQL语句

    作者:张继荣 王举国 谭琦 谢元呈 PowerBuilder是目前最流行的数据库开发工具之一.PowerBuilder提供了在程序代码中加入嵌入式SQL语句的功能来支持对数据库的访问.但这种嵌入式SQ ...

  9. oracle表名使用变量名,oracle 中动态sql语句,表名为变量,怎么解?

    如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句,但这个动态语句中带参数,或 ...

  10. Oracle 动态SQL语句

    Oracle 动态SQL语句     EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包.  它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块 ...

最新文章

  1. 【基础练习】【拓扑排序】codevs3294 车站分级题解
  2. 笔记-知识产权与标准化知识-GB/T9385-2006计算机软件文档编制规范
  3. 快开宝PDA开单器出入库扫码:让批发零售变得更简单
  4. unity案例入门(二)(坦克大战)
  5. docker导入镜像 liunx_docker扫盲?面试连这都不会就等着挂吧
  6. HoughLine变换
  7. libwacom9 : Depends: libwacom-common (= 2.2.0-1) but 1.12-1 is to be installed
  8. IFIX 需要权限打开某个画面
  9. python写出函数调用关系_函数递归调用: 调用者 与 被调用者之间的四种数据传递关系...
  10. 下载频道用户使用指南!!
  11. IC卡参数公钥之 AID和RID
  12. 三角形周长最短问题_三角形周长最短的动点问题
  13. 软件架构师之拥抱变化
  14. lamp mysql什么意思_lamp是什么意思
  15. 招银网络---C++
  16. 随身WiFi刷Debian系统折腾指南
  17. uchar和char、schar的区别
  18. 开学季||期待和你一同前行
  19. 使用Julia运用JuMP和Clp求解Lp和ILP问题(分支定界法)
  20. Swift之代码优化

热门文章

  1. 2012年12月工作总结
  2. Apache上部署Django
  3. struts2 实现多文件限制上传
  4. 第一章--最小的“操作系统”
  5. 【Hibernate步步为营】--关联映射之多对一
  6. Android之自定义Adapter的ListView
  7. 零成本学Arduino单片机之入门
  8. Nginx-06:Nginx配置实例之负载均衡
  9. C语言有以下几种取整方法:
  10. Linux线程-互斥锁pthread_mutex_t