|
16 | 16 | package examples.joins; |
17 | 17 |
|
18 | 18 | import static examples.joins.ItemMasterDynamicSQLSupport.itemMaster; |
19 | | -import static examples.joins.OrderDetailDynamicSQLSupport.orderDetail; |
| 19 | +import static examples.joins.OrderDetailDynamicSQLSupport.*; |
20 | 20 | import static examples.joins.OrderLineDynamicSQLSupport.orderLine; |
21 | 21 | import static examples.joins.OrderMasterDynamicSQLSupport.orderDate; |
22 | 22 | import static examples.joins.OrderMasterDynamicSQLSupport.orderMaster; |
| 23 | +import static examples.joins.UserDynamicSQLSupport.*; |
23 | 24 | import static org.assertj.core.api.Assertions.assertThat; |
24 | 25 | import static org.mybatis.dynamic.sql.SqlBuilder.*; |
25 | 26 |
|
@@ -482,4 +483,32 @@ public void testFullJoin2() { |
482 | 483 | assertThat(row.get("ITEM_ID")).isEqualTo(44); |
483 | 484 | } |
484 | 485 | } |
| 486 | + |
| 487 | + @Test |
| 488 | + public void testSelf() { |
| 489 | + try (SqlSession session = sqlSessionFactory.openSession()) { |
| 490 | + JoinMapper mapper = session.getMapper(JoinMapper.class); |
| 491 | + |
| 492 | + // get Bamm Bamm's parent - should be Barney |
| 493 | + SelectStatementProvider selectStatement = select(user1.userId, user1.userName, user1.parentId) |
| 494 | + .from(user1, "u1") |
| 495 | + .join(user2, "u2").on(user1.userId, equalTo(user2.parentId)) |
| 496 | + .where(user2.userId, isEqualTo(4)) |
| 497 | + .build() |
| 498 | + .render(RenderingStrategy.MYBATIS3); |
| 499 | + |
| 500 | + String expectedStatment = "select u1.user_id, u1.user_name, u1.parent_id" |
| 501 | + + " from User u1 join User u2 on u1.user_id = u2.parent_id" |
| 502 | + + " where u2.user_id = #{parameters.p1,jdbcType=INTEGER}"; |
| 503 | + assertThat(selectStatement.getSelectStatement()).isEqualTo(expectedStatment); |
| 504 | + |
| 505 | + List<User> rows = mapper.selectUsers(selectStatement); |
| 506 | + |
| 507 | + assertThat(rows.size()).isEqualTo(1); |
| 508 | + User row = rows.get(0); |
| 509 | + assertThat(row.getUserId()).isEqualTo(2); |
| 510 | + assertThat(row.getUserName()).isEqualTo("Barney"); |
| 511 | + assertThat(row.getParentId()).isNull(); |
| 512 | + } |
| 513 | + } |
485 | 514 | } |
0 commit comments