package net.paoding.rose.jade; import java.io.Serializable; import java.util.LinkedList; import java.util.List; import javax.sql.DataSource; import org.apache.commons.collections.CollectionUtils; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import net.paoding.rose.jade.annotation.DAO; import net.paoding.rose.jade.annotation.SQL; import net.paoding.rose.jade.context.application.JadeFactory; /** * 验证继承功能 * * @author 王志亮 [qieqie.wang@gmail.com] * */ public class SuperTest { @DAO interface BaseDAO<XX, E extends Serializable> extends Serializable { @SQL("select id, name from user where id=:1") E superGetById(Long id); @SQL("select id, name from user limit 100") List<E> superFind(); } @DAO interface BaseDAO2<T extends Serializable> extends BaseDAO<Object, T> { // } @DAO interface UserDAO extends BaseDAO2<User> { // 准备数据 (DDL) @SQL("create table user (id int, name varchar(200));") void createTable(); @SQL("insert into user (id, name) values(:1.id, :1.name);") int[] insert(List<User> users); } public static class User implements Serializable { /** * */ private static final long serialVersionUID = 5495017983473363962L; long id; String name; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { return (int) id; } @Override public boolean equals(Object obj) { if (!(obj instanceof User)) { return false; } User that = (User) obj; return this.id == that.id && this.name.equals(that.name); } @Override public String toString() { return "user:" + id + "(" + name + ")"; } } @Before public void init() { } @Test public void test() { UserDAO dao = getUserDAO(); // List<User> users = new LinkedList<SuperTest.User>(); User user1 = new User(); user1.id = 1; user1.name = "zhiliang.wang"; users.add(user1); // User user2 = new User(); user2.id = 2; user2.name = "helen.wang"; users.add(user2); // User user3 = new User(); user3.id = 3; user3.name = "bad boy"; users.add(user3); // dao.insert(users); Assert.assertEquals(user3, dao.superGetById(3L)); Assert.assertEquals(3, dao.superFind().size()); Assert.assertTrue(CollectionUtils.isEqualCollection(users, dao.superFind())); } /** * @return */ private UserDAO getUserDAO() { DataSource dataSource = DataSources.createUniqueDataSource(); JadeFactory factory = new JadeFactory(dataSource); UserDAO dao = factory.create(UserDAO.class); dao.createTable(); return dao; } }