作家
登录

历时一年,Java 持久层工具 jSqlBox 迎来首个正式版

作者: 来源: 2017-12-05 13:04:46 阅读 我要评论

SQL写法4 - iXxxx()办法,Inline风格,在SQL里直接写参数,参数暂存在Threadlocal中,SQL履行时主动转化为preparedStatement,这种方法的长处是被赋值的字段和实际参数可以写在同一行上,字段多时利于保护,也便利根据不肯定的前提动态拼接SQL。这是始于jSqlBox的技巧立异。

  ctx.iExecute("insert into users (", // " name ,", param0("Sam"), //SqlBoxContext.param0()办法的静态惹人,下同 " address ", param("Canada"), // ") ", valuesQuesions()); param0("Tom", "China"); ctx.iExecute("update users set name=?,address=?"); Assert.assertEquals(1L, ctx .iQueryForObject("select count(*) from users where name=? and address=?" + param0("Tom", "China"))); ctx.iExecute("delete from users where name=", question0("Tom"), " or address=", question("China"));

SQL写法5 - tXxxx()办法, 模板风格,应用模板来存放SQL变量:

    Map<String, Object> params=new HashMap<String, Object>(); User sam = new User("Sam", "Canada"); User tom = new User("Tom", "China"); params.put("user", sam); ctx.tExecute(params,"insert into users (name, address) values(#{user.name},#{user.address})"); params.put("user", tom); ctx.tExecute(params,"update users set name=#{user.name}, address=#{user.address}"); params.clear(); params.put("name", "Tom"); params.put("addr", "China"); Assert.assertEquals(1L, ctx.tQueryForObject(params,"select count(*) from users where name=#{name} and address=#{addr}")); params.put("u", tom); ctx.tExecute(params, "delete from users where name=#{u.name} or address=#{u.address}");

SQL写法6 - tXxxx()办法,模板风格和Inline风格的结合应用:

Path的where()办法定义一个表达式,用于断定节点是否可以选中,表达式支撑的关键字有: 当前实体的所有字段名、>、 <、 =、 >、=、 <=、 +、 -、 *、/、null、()、not 以及 equals、contains等常见字符串函数,详见手册或单位测试源码。

  • 开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散

        user = new User("Sam", "Canada"); put0("user", user); ctx.tExecute("insert into users (name, address) values(#{user.name},#{user.address})"); user.setAddress("China"); ctx.tExecute("update users set name=#{user.name}, address=#{user.address}" + put0("user", user)); Assert.assertEquals(1L, ctx.tQueryForObject("select count(*) from users where ${col}=#{name} and address=#{addr}", put0("name", "Sam"), put("addr", "China"), WordStr("col", "name"))); ctx.tExecute("delete from users where name=#{u.name} or address=#{u.address}", put0("u", user));

    SQL写法7 - tXxxx()办法,依然是模板风格,然则运行期切换成应用另一个模板"NamedParamSqlTemplate",采取冒号来作参数分界符。
    jSqlBox是一种开放式架构设计,它对事务、日记、模板都出缺省实现,然则也支撑切换成其它第三方实现。

    注:如不雅有大年夜批的插入、更新语句,可以在开端前调用ctx.nBatchBegin()办法,停止后调用ctx.nBatchEnd办法,则插入办法将主动汇总成批量操作,不过应用此功能的前提是数据库要支撑批量操作功能(如MySQL要设定rewriteBatchedStatements=true)。

    NoSQL萌芽

        user = new User("Sam", "Canada"); ctx.setSqlTemplateEngine(NamedParamSqlTemplate.instance()); put0("user", user); ctx.tExecute("insert into users (name, address) values(:user.name,:user.address)"); user.setAddress("China"); ctx.tExecute("update users set name=:user.name, address=:user.address" + put0("user", user)); Assert.assertEquals(1L, ctx.tQueryForObject("select count(*) from users where ${col}=:name and address=:addr", put0("name", "Sam"), put("addr", "China"), WordStr("col", "name"))); ctx.tExecute("delete from users where name=:u.name or address=:u.address", put0("u", user));	
    				
    			

      推荐阅读

      12 月全球数据库排名:PostgreSQL 稳步上升

    开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 DB-Engines 宣布了 2017 年 12 月份的数据库排名。排前 20 名的数据库中,Oracle 稳居第一,排名在第 9 名的 Cassandra 赶超排在第>>>详细阅读


    本文标题:历时一年,Java 持久层工具 jSqlBox 迎来首个正式版

    地址:http://www.17bianji.com/lsqh/39474.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)