使用 MyBatis 动态选择 SQL 语句

2024-04-11

我想在 Oracle 12g 数据库中使用 mybatis 进行动态 sql 语句,我可以利用哈希映射来添加如下条件:

<select id="getUsers" resultType="hashmap" parameterType="hashmap"> 
  select * 
  from users 
  <where> 
  <iterate var="i=0" increment> 
    ${columni} like #{valuei} 
  </iterate> 
  </where> 
</select> 

我有办法完成类似的事情吗?


From 文档 http://mybatis.github.io/mybatis-3/sqlmap-xml.html:

字符串替换

默认情况下,使用#{}语法将导致 MyBatis 生成PreparedStatement属性并根据PreparedStatement参数安全地设置值(例如?)。虽然这更安全、更快并且几乎总是首选,但有时您只想直接将未经修改的字符串注入 SQL 语句中。例如,对于ORDER BY,你可以使用这样的东西:

ORDER BY ${columnName}

这里MyBatis 不会修改或转义字符串。

这允许您例如将列名作为参数传递给查询等。

记得always清理直接粘贴到 SQL 的数据。


如果您需要生成多个条件WHERE条款、使用<where>标记为<foreach>里面。注意<foreach>具有允许指定分隔符、开始/结束字符串等的高级属性。结合${}我之前提到过的符号允许构建动态WHERE条款。有关示例,请参见这个答案 https://stackoverflow.com/a/7560384/1995170.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MyBatis 动态选择 SQL 语句 的相关文章

  • Java-Android 上的 MulticastSocket 问题

    我开始使用 MulticastSocket 进行编码 尝试制作一个带有客户端和服务器的简单应用程序来发送消息 我的服务器代码 import java io IOException import java net DatagramPacket
  • 增强的 jsp:include 实现

    一直困扰我的事情之一
  • 如何在jpanel上延迟显示图片?

    这是我遇到问题的代码部分 我应该每 5 秒显示一次图片 但它不起作用 我希望你能帮忙 谢谢 编辑 5秒后所有图片一起显示 JButton btnGenerateNumber new JButton Generate Number btnGe
  • 在基于 RESTful 的应用程序中管理状态

    我们正在评估用于基于 Web 的应用程序的技术 一些建议是采用基于 RESTful 的服务方法 技术堆栈 1 春天 2 Apache CXF JAX RS 我的问题是 1 如何在请求之间管理状态 例如 用户已经过身份验证 现在他正在发出一系
  • Electron 应用程序可以与 java 代码集成吗?

    由于node js仍然缺乏Java中存在的重要功能 因此我想使用Java而不是node js 并使用Web语言 html js css 创建客户端 Electron 是跨平台的 java 也是跨平台的 因此似乎有一个能够两全其美的解决方案
  • 在Java中,如何在单线程程序中抛出ConcurrentModificationException? [复制]

    这个问题在这里已经有答案了 我正在读这篇文章 Java常见并发问题 https stackoverflow com questions 461896 what is the most frequent concurrency problem
  • 如何通过csv文件仅更新sql表的一列

    我有一个 csv 文件包含一些数据 在我的 Sql 数据库中 我有一个具有多个列名的表 现在我只想通过 csv 文件更新一列 谢谢 你可以这样尝试 Import the csv file to a temp table Update you
  • 如何将 AES CCM 与 Bouncycastle JCE 提供程序一起使用 - CCMParameters

    是否可以使用JCE来执行CCM 我在互联网上看到很多使用非 JCE bouncycastle 类的示例 特别是 我看到他们调用 init 并传入 CCMParameters 对象 问题是 这个 CCMParameters 对象不是从 Alg
  • 了解 Android 上的默认键盘

    我想知道 Android 中用户选择的默认键盘 我知道我可以使用以下命令访问启用的输入法列表InputMethodManager 但我想知道用户当前使用的是哪一个 到目前为止 我已经尝试获取当前的输入法子类型 InputMethodMana
  • CXFServlet 抛出 java.lang.NoSuchMethodError:

    java lang NoSuchMethodError org codehaus stax2 ri EmptyIterator getInstance Lorg codehaus stax2 ri EmptyIterator at com
  • 将resourceBundle与外部文件java一起使用

    我一直在阅读有关此问题的其他问题和答案 但我不明白资源边界是如何完全工作的 我认为这与 Joomla 使用多语言选项的方式类似 基本上 您有要阅读的不同语言的不同消息的文件 所以我在 src Lang 文件夹中创建了 System prop
  • 如何从github项目获取jar? [复制]

    这个问题在这里已经有答案了 我想使用官方网站上的 kSoap2 android 库http simpligility github io ksoap2 android index html http simpligility github
  • 如何使用java.util.concurrent包实现后台线程?

    这是我首先使用的代码 但在最新的 Android 版本中AsyncTask类已被弃用并且 因此它没有响应 然后我使用了Thread类 但该类也不起作用 我想要与我得到的结果相同的结果AsyncTask班级 我知道我必须使用 java uti
  • 如何使用 Spring 状态机在状态转换期间引发异常

    我试图了解状态转换期间操作如何抛出异常 我配置了这个简单的状态机 transitions withExternal source State A1 target State A2 event Event E1 action executeA
  • 如何使用 Jersey 的内部路由机制来提取类/方法引用?

    我正在运行 Jersey 1 8 应用程序 Jersey 作为 Servlet 运行 我需要写一个小服务程序过滤器给定一个简单的请求 响应 能够确定哪个 REST 资源 方法将响应该请求并从注释中提取值 例如 假设我有以下资源 Path f
  • 关于 servlet 的简要想法[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 从哪里可以获得有关 servlet 的知识 大多数人会从 Sun 的有关 servlet 的官方教程开
  • jtree 编程式多选

    是否能够以编程方式选择 JTree 中的多个树节点 我已经设置了多选模式tree getSelectionModel setSelectionMode TreeSelectionModel DISCONTIGUOUS TREE SELECT
  • 关于 Executors.newSingleThreadExecutor() 的问题

    这是一个关于以下代码的程序流程的问题 import java util concurrent ExecutorService import java util concurrent Executors public class Test p
  • 使用 Android API 发布推文

    我一直在寻找一种使用 Android 应用程序发布推文的方法 但我发现的所有方法都不起作用 我不得不承认 Twitter 的 API 并不是那么容易理解 但是我的代码并不长 而且我看不出我的错误在哪里 这是我的代码 public class
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto

随机推荐