Exemplo n.º 1
0
  /**
   * 级联查询,驱动表的选择字段指定,其他表自动
   *
   * @throws SQLException
   */
  @Test
  public void testSelectColumnsInCascade() throws SQLException {
    Query<Person> t1 = QB.create(Person.class);
    // 只选择指定的列
    Selects select = QB.selectFrom(t1);
    select.column(t1, "schoolId");
    select.columns(t1, "name,age,cell");
    select.column(t1, "id");
    List<Person> map = db.select(t1.getInstance());

    Person p = map.get(0);
    assertTrue(!p.getScores().isEmpty());
    assertTrue(!p.getFriends().isEmpty());
    for (Score score : p.getScores()) {
      assertNotNull(score.getTestTime());
    }
    System.out.println("===========result:" + map.size() + "==============");
  }
Exemplo n.º 2
0
  /**
   * 在一对多的关联中使用对子表的过滤条件
   *
   * @throws SQLException
   */
  @Test
  public void testFilterInOneToManyRef() throws SQLException {
    ORMConfig.getInstance().setCacheDebug(true);
    System.out.println("=========== testFilterInOneToManyRef Start ==========");
    // 无过滤条件的
    Person p1 = new Person();
    p1.getQuery().addCondition(Person.Field.id, 1);
    Person result = db.load(p1);
    assertEquals(6, result.getScores().size());

    // 添加过滤条件的
    Person p = new Person();
    p.getQuery().addCondition(Person.Field.id, 1);
    p.getQuery().addCascadeCondition(QB.in(Score.Field.subject, new String[] {"语文", "化学", "英语"}));

    result = db.load(p);
    assertEquals(3, result.getScores().size());
    System.out.println("=========== testFilterInOneToManyRef End ==========");
  }
Exemplo n.º 3
0
  @Test
  public void testDeleteCascade() throws SQLException {
    Transaction db = this.db.startTransaction();
    Person p = new Person();
    p.setAge(20);
    db.select(p);

    System.out.println(p.getScores());
    db.deleteCascade(p);
    db.rollback(true);
  }
Exemplo n.º 4
0
 private void checkResult1(List<Person> result) {
   assertEquals(2, result.size());
   Person p1 = result.get(0);
   assertTrue(p1.getName().startsWith("爸爸"));
   assertTrue(p1.getScores().size() == 6);
   assertEquals(80, CollectionUtils.findFirst(p1.getScores(), "subject", "英语").getScore());
   assertEquals(90, CollectionUtils.findFirst(p1.getScores(), "subject", "物理").getScore());
   assertEquals(50, CollectionUtils.findFirst(p1.getScores(), "subject", "电脑").getScore());
   assertEquals(70, CollectionUtils.findFirst(p1.getScores(), "subject", "算数").getScore());
   assertEquals(60, CollectionUtils.findFirst(p1.getScores(), "subject", "语文").getScore());
   assertEquals(100, CollectionUtils.findFirst(p1.getScores(), "subject", "化学").getScore());
   assertTrue(p1.getSchoolId() == 2);
   assertEquals("战国高校", p1.getSchoolName());
   assertEquals(p1.getSchoolName(), p1.getSchool().getName());
   assertEquals(p1.getSchoolId(), p1.getSchool().getId());
   assertEquals(2, p1.getFriends().size());
   assertEquals(p1.getFriendComment()[0], p1.getFriends().get(0).getComment());
   assertTrue(p1.getFriends().get(0).getFriend().getName().startsWith("JinWang"));
   assertTrue(p1.getFriends().get(1).getFriend().getName().startsWith("儿子"));
   p1.getParentName();
 }
Exemplo n.º 5
0
  /**
   * 测试使用复杂的子查询过滤条件
   *
   * @throws SQLException
   */
  @Test
  public void testComplextFilterCondition() throws SQLException {
    System.out.println("=========== testComplextFilterCondition End ==========");
    //
    // 添加过滤条件的
    Person p = new Person();
    p.getQuery().addCondition(Person.Field.id, 1);

    Condition or =
        QB.or(
            QB.eq(Score.Field.subject, "语文"),
            QB.eq(Score.Field.subject, "化学"),
            QB.eq(Score.Field.subject, "英语"));
    p.getQuery().addCascadeCondition("scores", or);
    Person result = db.load(p);
    System.out.println("loaded");
    assertEquals(3, result.getScores().size());

    System.out.println("=========== testComplextFilterCondition End ==========");
  }