`
465272694
  • 浏览: 51638 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

技巧:动态创建SQL语句

    博客分类:
  • sql
阅读更多

MATT在他的博客中发表了一篇介绍动态创建SQL语句的博文

在文中,他讲到了自己在使用IN操作符进行数据库查询的时候遇到的问题:根据外部传入的集合个数决定IN操作符中占位符“?”的个数。

MATT给出了他的解决办法:

    import java.sql.Connection
    import java.sql.DriverManager
    import java.sql.SQLException

    def list = getResult()
    Connection connection = DriverManager.getConnection(
               "jdbc:Oracle:thin:username/password@xyz:1521:abc")
    Sql sql = new Sql(connection)
    def query = 
        "select * from foo where id in (${'?, '*(list.size()-1)}?)"
    sql.query query, list, {ResultSet rs ->
        println rs.getLong("id"); // and other stuff from foo
    }
    sql.close()
 

关键在这句:

    ${'?, ' * (list.size()-1)}?

“${..}”里面是将“?, ”重复list.size()-1次,再加上后面一个“?”,刚好凑够了list.size()个“?”。

还有网友提出了其它的解决方法

    (['?'] * list.size()).join(', ')
分享到:
评论

相关推荐

    (第一卷)Microsoft.SQL.Server.2008技术内幕:T-SQL语言基础

    亲,本人纯手工添加了书签哦!!方便阅读  《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》是Microsoft SQL Server ...10.6 动态SQL 10.7 例程 10.8 错误处理 10.9 总结 附录A SQL SERVER使用入门 索引

    (第二卷)Microsoft SQL Server 2008技术内幕:T-SQL语言基础

    亲,本人纯手工添加了书签哦!!方便阅读  《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》是Microsoft SQL ...10.6 动态SQL 10.7 例程 10.8 错误处理 10.9 总结 附录A SQL SERVER使用入门 索引

    经典SQL语句大全

    10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1...

    动态sql语句 操作更灵活更严谨.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    这个库是生成动态 SQL 语句的框架.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    一款IDEA插件,可以实现生成Mysql的动态SQL,适合新手使用mybatis来写项目,加快项目落地周期.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    第4章 动态SQL 第5章 视图 第6章 用户定义函数 第7章 存储过程 第8章 触发器 第9章 事务 第10章 错误处理 第11章 Service Broker 附录A CLR程序指南 A.1 创建CLRUtilities数据库: SQL Server A.2 部署:Visual ...

    用mybatis 的sql语句操作mongodb的简易方案.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    动态SQL插件,提供mybatis xml SQL动态脚本添加、删除接口,达到不用重启项目,通过接口动态变更SQL的效果.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    Microsoft SQL Server 2005技术内幕:T-SQL查询

    目录 致谢 引言 第1章 T-SQL查询和编程基础  1.1 理论背景  1.2 SQL SERVER体系结构 ... 1.3 创建表和定义数据完整性 ... 2.1 SELECT语句的元素 ... 10.6 动态SQL  10.7 例程  10.8 错误处理  10.9 总结

    MyBatis Dynamic SQL 动态sql案例.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    mybatis动态SQL练习 动态查询 动态修改.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    springboot集成mybatis动态sql.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    Mybatis动态SQL高级映射.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    mybatis-generate优化,自动生成动态sql.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    mybatis框架 更改ems系统,使用动态sql等.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    基于CodeMirror5实现的mybatis+sql提示扩展功能,主要是用于在线设计开发场景中的动态sql部分.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    mybatis支持ProviderContext,可以更灵活实现动态SQL功能.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    这款插件旨在帮助Mybatis初学者生成动态SQL片段.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    MyBatis框架的Dao代理、动态SQL、配置文件的学习.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

Global site tag (gtag.js) - Google Analytics