设计宗旨:
一些代码示例:
-
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 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 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());
-
}
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());
}
-
<span style=
"font-weight: normal;"
>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"
));
-
}</span>
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。我写过两篇文章来讨论过这个问题
我使用DSL编写SQL的一个java实现
你还在用PreparedStatement吗
我认为PreparedStatement对比直接拼接SQL并没有绝对的优势,而且它没法解决一些实际的需求,写起来也不能算优雅。于是我开
始搜索相关的解决方案,并没有发现一些现存的工具,在读了很多相关的文章,我认为DSL会是一个很好的方式来处理SQL。我在工作的项目当中引入了DSL
的思想,写了一个雏形的框架,因为一开始写的时候,设计不是特别完善,于是决定做一个开源的项目,把这个框架重新设计,这就成了LikeSql。
LikeSql的计划
- 尽快完善文档,释出release版本(希望年内达成吧)
- 编写教程和例子
- 建立反馈渠道和讨论圈子
- 和其他框架的集成
关于LikeSql的名字
Like有两层意思,一个相似,像的意思,就是希望这个框架写起来与SQL文本很相近,易读性强;另一个意思是喜欢,希望使用它的用户能够喜欢写SQL。
分享到:
相关推荐
SQL语句 SELECT LIKE like用法详解 包含你不知道的用法 在SQL结构化查询语言中,LIKE语句有着至关重要的作用。
sql server like用法 将通配符作为文字使用
使用sql语句的like语句。适合10g数据库使用。
SQL Like SQL 通配符 SQL In SQL Between SQL Aliases SQL Join SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Union SQL Select Into SQL Create DB SQL Create Table SQL ...
SQL语句 SELECT LIKE like用法详解SQL语句 SELECT LIKE like用法详解SQL语句 SELECT LIKE like用法详解
SQL使用Like模糊查询 vC实现
SQL like子句的另一种实现方法 下面两种方法也可实现模糊查询: select from table where patindex "%字符%" a >0 select from table where charindex "字符" a >0
在CMS开发中,经常会有类似这样的需求: 提问——回答模式,经典的例子是百度提问。 提问者提出问题,由其他人回答,其他人可以是用户,也可以是服务商。 在这个模式中,如何充分利用历史数据是关键的...
Nchar在like时的特殊性.sql
此文档中详细的记载了,Sql Server参数化查询之where in和like实现详解,希望可以帮到下载的朋友们!
SQLLIKE用法.docx
declare @LikeSql nvarchar(32);–定义一个like变量,如果是存储过程,此处可以存储过程的参数 set @LikeSql = ‘someword%’;–把LikeSql变量赋值,可以赋值成’%xxxxxxxxxxxx%’ declare @SelectSql nvarchar(128)...
COST(按成本优化) RULE(按规则优化) CHOOSE(缺省)(ORACLE自动选择成本或规则进行优化) ALL_ROWS(所有的行尽快返回) FIRST_ROWS(第一行数据尽快返回)
本文实例叙述了在拼接sql语句的时候,如果遇到Like的情况该怎么办。 一般采用带like的SQL语句进行简单的拼接字符串时,需要开率遇到sql注入的情况。这确实是个需要注意的问题。 这里结合一些查阅的资料做了初步的...
11. SQL LIKE 操作符 15 12. SQL 通配符 16 13. SQL IN 操作符 18 14. SQL BETWEEN 操作符 18 15. SQL Alias(别名) 19 16. SQL JOIN 20 17. SQL INNER JOIN 关键字 22 18. SQL LEFT JOIN 关键字 23 19. SQL RIGHT ...
#资源达人分享计划#
T-SQL中like和order by 语句的使用,以及之间的区别
如果您将GoogleSpreadSheets用作GoogleAppsScript上的数据库,则可以用Like SQL编写。 安装 项目ID: MAoZrMsylZMiNUMljU4QtRHEMpGMKinCk 资源>库...>在查找库中输入项目ID MAoZrMsylZMiNUMljU4QtRHEMpGMKinCk >...
写java程序时用来拼装sql语句时使用的小工具,在.net 4.0环境下运行。例如将 select a, b, c from abc where a like('3') 转换为: sql.append("select ");...sql.append("where a like('3') ");