提交 007fbdfd authored 作者: Thomas Mueller's avatar Thomas Mueller

JaQu: the decompiler has been improved.

上级 fb7066ce
...@@ -17,14 +17,8 @@ import org.h2.jaqu.Filter; ...@@ -17,14 +17,8 @@ import org.h2.jaqu.Filter;
import org.h2.test.TestBase; import org.h2.test.TestBase;
/** /**
* <p>
* This is the implementation of the 101 LINQ Samples as described in * This is the implementation of the 101 LINQ Samples as described in
* http://msdn2.microsoft.com/en-us/vcsharp/aa336760.aspx * http://msdn2.microsoft.com/en-us/vcsharp/aa336760.aspx
* </p><p>Why should you use JaQu?
* Type checking,
* autocomplete,
* no separate SQL scripts,
* no more SQL injection.</p>
*/ */
public class SamplesTest extends TestBase { public class SamplesTest extends TestBase {
...@@ -326,6 +320,23 @@ public class SamplesTest extends TestBase { ...@@ -326,6 +320,23 @@ public class SamplesTest extends TestBase {
private void testComplexObject() { private void testComplexObject() {
ComplexObject co = new ComplexObject(); ComplexObject co = new ComplexObject();
String sql = db.from(co).
where(co.id).is(1).
and(co.amount).is(1L).
and(co.birthday).smaller(new java.util.Date()).
and(co.created).smaller(java.sql.Timestamp.valueOf("2005-05-05 05:05:05")).
and(co.name).is("hello").
and(co.time).smaller(java.sql.Time.valueOf("23:23:23")).
and(co.value).is(new BigDecimal("1")).getSQL();
assertEquals("SELECT * FROM ComplexObject " +
"WHERE id = ? " +
"AND amount = ? " +
"AND birthday < ? " +
"AND created < ? " +
"AND name = ? " +
"AND time < ? " +
"AND value = ?", sql);
long count = db.from(co). long count = db.from(co).
where(co.id).is(1). where(co.id).is(1).
and(co.amount).is(1L). and(co.amount).is(1L).
...@@ -342,22 +353,29 @@ public class SamplesTest extends TestBase { ...@@ -342,22 +353,29 @@ public class SamplesTest extends TestBase {
testComplexObject2(1, "hello"); testComplexObject2(1, "hello");
} }
private void testComplexObject2(final int x, final String name) { private void testComplexObject2(final int x, final String name) {
final ComplexObject co = new ComplexObject(); final ComplexObject co = new ComplexObject();
long count = db.from(co).
where(new Filter() { public boolean where() { String sql = db.from(co).
where(new Filter() { public boolean where() {
return co.id == x
&& co.name.equals(name)
&& co.name.equals("hello");
} }).getSQL();
assertEquals("SELECT * FROM ComplexObject " +
"WHERE id=? " +
"AND ?=name " +
"AND 'hello'=name", sql);
long count = db.from(co).
where(new Filter() { public boolean where() {
return co.id == x return co.id == x
&& co.name.equals(name) && co.name.equals(name)
&& co.value == new BigDecimal("1") && co.name.equals("hello");
&& co.amount == 1L } }).selectCount();
&& co.birthday.before(new java.util.Date())
&& co.created.before(java.sql.Timestamp.valueOf("2005-05-05 05:05:05"))
&& co.time.before(java.sql.Time.valueOf("23:23:23"));
} }).selectCount();
// TODO should return only one object
assertEquals(2, count);
}
assertEquals(1, count);
}
//## Java 1.5 end ## //## Java 1.5 end ##
/** /**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论