LikeSql——让你更优雅地写SQL_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > LikeSql——让你更优雅地写SQL

LikeSql——让你更优雅地写SQL

 2010/12/11 11:32:03  Heis  http://heis.javaeye.com  我要评论(0)
  • 摘要:LikeSql是什么LikeSql是我写一个开源的小框架(http://code.google.com/p/likesql/),目标是提供一个更优雅地处理SQL的一个方案,希望能够替代PreparedStatement和直接拼接SQL。虽然现在还有没有正式的release版本,我还在为此努力。设计宗旨:专注于优雅地编写SQL和易读性保持细小和灵活一些代码示例:publicvoidtestAtStyleExpression(){LikeSqlsql=DML.select("id,name")
  • 标签:优雅 SQL

?

LikeSql是什么

LikeSql是我写一个开源的小框架(http://code.google.com/p/likesql/),目标是提供一个更优雅地处理SQL的一个方案,希望能够替代PreparedStatement和直接拼接SQL。虽然现在还有没有正式的release版本,我还在为此努力。

?

设计宗旨:

  • 专注于优雅地编写SQL和易读性
  • 保持细小和灵活

?

一些代码示例:

?

public void testAtStyleExpression(){
		LikeSql sql=DML.select("id,name")
		               .from("user")
		               .where(AtExp.at("(name =@name or id=@id) and gender=@gender")
		            		                       .set("id", 1)
		            		                       .set("name", "John")
		            		                       .set("gender", "M"));
		
		String eSql="SELECT id,name FROM user WHERE (name ='John' or id=1) and gender='M'";
		String eTpl="SELECT id,name FROM user WHERE (name =? or id=?) and gender=?";
		
		assertEquals(eSql,sql.toString());
		assertEquals(eTpl,sql.toTemplate());
	}
public void testInExpression(){
		LikeSql sSql=DML.select("id,name")
		    .from("user")
		    .where(QuestExp.qt("id in (?)").set(1,ArrayExp.array(new int[]{1,3,6})));
		
		String eSql="SELECT id,name FROM user WHERE id in (1,3,6)";
		String eTpl="SELECT id,name FROM user WHERE id in (?,?,?)";
		
		assertEquals(eSql,sSql.toString());
		assertEquals(eTpl,sSql.toTemplate());
	}
public void testSimpleSql(){
		String eSql="INSERT INTO users (no,id,name,gender,height) VALUES(1,15666662656565,'johny',null,195.36)";
		String eTpl="INSERT INTO users (no,id,name,gender,height) VALUES(?,?,?,?,?)";
		
		LikeSql iSql=DML.insertInto("users")
		    .value("no", 1)
		    .value("id", new BigInteger("15666662656565"))
		    .value("name","johny")
		    .value("gender",null)
		    .value("height", 195.36);
		
		assertEquals(eSql,iSql.toString());
		assertEquals(eTpl,iSql.toTemplate());
	}

?

LikeSql sql=DML.selectAll()
				               .from("user")
				               .where(QuestExp.qt("id=? AND gender=?")
						                      .set(1, 1)
						                      .set(2, 'M'));
				PreparedStatement stmt=sql.toPreStatement(con);
				System.out.println("Template:"+sql.toTemplate());
				System.out.println("SQL:"+sql.toString());
				ResultSet rs=stmt.executeQuery();
				while(rs.next()){
					System.out.println(rs.getString("name"));
				}

?

LikeSql不是什么

  • LikeSql不是ORM框架
  • LikeSql不是重复发明iBatis,Hibernate

?

为什么会有LikeSql

其实最初的想法来源于我工作经手的几个项目,项目都是采用简单的JDBC+直接拼接SQL来访问数据库。直接拼接SQL存在诸多缺点,这里就不在多论述了。主要是我在维护和改进的过程中,发现并没有一个很优雅的方式来处理SQL。我写过两篇文章来讨论过这个问题
发表评论
用户名: 匿名