浏览 5016 次
锁定老帖子 主题:SQLBuilder
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-07-21   最后修改:2015-07-21
给大家介绍一个新的SQL script builder工具AbacusUtil, 这里有一个简单的例子:

String sql = E.insert("gui", "firstName", "lastName").into("account").sql();
// sql: "INSERT INTO account (gui, first_name, last_name) VALUES (?, ?, ?)"

// Generate parameterized sql with named parameter.
sql = NE.insert("gui", "firstName", "lastName").into("account").sql();
// sql: "INSERT INTO account (gui, first_name, last_name) VALUES (:gui, :firstName, :lastName)"
   发表时间:2015-08-10  
这和写一段SQL有什么区别?把一句简单的SQL程序化,还更难懂了。其它语言的程序员肯定看起来费劲。
0 请登录后投票
   发表时间:2015-08-12   最后修改:2015-08-12
在某种程度或从某些方面看,你的想法很有道理。如果只是做一个简单练习和学习,我个人也倾向直接写SQL:
String sql = "INSERT INTO account (gui, first_name, last_name) VALUES (:gui, :firstName, :lastName)";
比:
String sql = NE.insert("gui", "firstName", "lastName").into("account").sql();

更直接清晰,虽然第二行代码对我来说也很清晰。

但是,如果是做一个软件产品的开发,第二个行的代码将会带来一些的好处:

1,简化sql的写法。你可以试着写几个或是十几个SQL语句,用上面两种不同的写法,来感受一下真实的产品开发。

2,统一的格式化。在实际开发中,因为时间,个人的爱好/习惯...同样一个SQL语句不同的人写出可能千奇百样:大小写不一致,空格多少不一致...比如上面那个SQL语句:如果是直接写String:有些人可能写成:
String sql = "INSERT into account (gui, first_name,  last_name) VALUES (:gui,  :firstName, :lastName)";

3,在某种程度上,第二种写法是结构化的和类型安全的,你只需写字段名和表名,更方便于代码的维护和查错。

再举个例子,在开发中有些表有十几个甚至更多的字段,经常需要根据id或其它的条件去查询,例如:
String sql = "SELECT id AS \"id\", gui AS \"gui\", email_address AS \"emailAddress\", first_name AS \"firstName\", middle_name AS \"middleName\", last_name AS \"lastName\", birth_date AS \"birthDate\", status AS \"status\", last_update_time AS \"lastUpdateTime\", create_time AS \"createTime\", contact AS \"contact\", devices AS \"devices\" FROM account WHERE id = :id";
如果直接手动去写上面的SQL:1)不方便,2)容易出错,3)难维护。用SQLBuilder则只需要:
String sql = NE.selectFrom(Account.class).where("id = :id").sql();

虽然从文字上看这些都是一些不重要的小东西,但是开发中一点一滴小的方面对软件质量的好坏有着非常重要的影响。
0 请登录后投票
   发表时间:2015-08-18  
倾向于楼主的做法,我做过类似的:
QueryRunner runner = new QueryRunner();
runner.select("uid", "name").from("user").orderBy("uid", null).limit(0, 100);
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics