diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/entity/Team.java b/examples/showcase/src/main/java/org/springside/examples/showcase/entity/Team.java index c10eb7cbd9b47471e1f6cf10a5161a69c2132bd8..9798499fdfd72883546c190bb220131fcfd37470 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/entity/Team.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/entity/Team.java @@ -2,13 +2,20 @@ package org.springside.examples.showcase.entity; import java.util.List; +import javax.persistence.Entity; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Table; + import com.google.common.collect.Lists; /** - * 项目. + * 团队. * * @author calvin */ +@Entity +@Table(name = "SS_TEAM") public class Team extends IdEntity { private String name; @@ -23,6 +30,7 @@ public class Team extends IdEntity { this.name = name; } + @OneToOne public User getMaster() { return master; } @@ -31,6 +39,7 @@ public class Team extends IdEntity { this.master = master; } + @OneToMany public List getUserList() { return userList; } diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/entity/User.java b/examples/showcase/src/main/java/org/springside/examples/showcase/entity/User.java index 14b6ceb3801a9d441c3a608fd0744a8f7bdcfd5a..b3817f600802baf2682deb828fe776ba85d4a3d7 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/entity/User.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/entity/User.java @@ -6,6 +6,7 @@ import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.Transient; @@ -36,6 +37,8 @@ public class User extends IdEntity { private String email; private String status; + private Team team; + private List roleList = Lists.newArrayList(); //有序的关联对象集合 @NotBlank @@ -113,6 +116,15 @@ public class User extends IdEntity { this.roleList = roleList; } + @ManyToOne + public Team getTeam() { + return team; + } + + public void setTeam(Team team) { + this.team = team; + } + @Transient @JsonIgnore public String getRoleNames() { diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/AccountDao.java b/examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/AccountDao.java index a8b7fe4c00b93e4b9fe5458ec583241110c1c9d0..afda86f2ecd03eb460c75950739c2d23f7c47ee8 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/AccountDao.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/AccountDao.java @@ -14,7 +14,7 @@ public interface AccountDao { public List searchUser(Map parameters); - public Long saveUser(User user); + public void saveUser(User user); public void deleteUser(Long id); diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebServiceImpl.java b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebServiceImpl.java index adaa4e6d539348453adbfec2ed9f6b189e23b00a..5f34d12cfa7d93b117adcbebc2704ffa62ca116d 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebServiceImpl.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebServiceImpl.java @@ -103,9 +103,9 @@ public class AccountWebServiceImpl implements AccountWebService { User userEntity = BeanMapper.map(user, User.class); BeanValidators.validateWithException(validator, userEntity); - Long userId = accountDao.saveUser(userEntity); + accountDao.saveUser(userEntity); - return new IdResponse(userId); + return new IdResponse(userEntity.getId()); } catch (ConstraintViolationException e) { String message = StringUtils.join(BeanValidators.extractPropertyAndMessageAsList(e, " "), "\n"); return handleParameterError(response, e, message); diff --git a/examples/showcase/src/main/resources/mybatis/AccountMapper.xml b/examples/showcase/src/main/resources/mybatis/AccountMapper.xml index 2dd53779800996354989eb339d8e868cfc5ca931..8864f68c9cc6e63ec640f4fa1fe8124e52daa63b 100644 --- a/examples/showcase/src/main/resources/mybatis/AccountMapper.xml +++ b/examples/showcase/src/main/resources/mybatis/AccountMapper.xml @@ -20,7 +20,7 @@ diff --git a/examples/showcase/src/main/resources/sql/h2/schema.sql b/examples/showcase/src/main/resources/sql/h2/schema.sql index a43f8acafdd6b155e5d325506866d95a3affd631..3168b325dbb9207330d73cbc58085bb69e4db13b 100644 --- a/examples/showcase/src/main/resources/sql/h2/schema.sql +++ b/examples/showcase/src/main/resources/sql/h2/schema.sql @@ -7,33 +7,33 @@ drop table if exists ss_team; create table ss_role ( - id varchar(16), + id bigint generated by default as identity, name varchar(255) not null unique, primary key (id) ); create table ss_user ( - id varchar(16), + id bigint generated by default as identity, login_name varchar(255) not null unique, name varchar(64), password varchar(255), salt varchar(64), email varchar(128), status varchar(32), - team_id varchar(16), + team_id bigint, primary key (id) ); create table ss_user_role ( - user_id varchar(16) not null, - role_id varchar(16) not null, + user_id bigint not null, + role_id bigint not null, primary key (user_id, role_id) ); create table ss_team ( - id varchar(16), + id bigint generated by default as identity, name varchar(255) not null unique, - master varchar(16), + master_id bigint, primary key (id) ); diff --git a/examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/MyBatisTest.java b/examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/AccountDaoTest.java similarity index 50% rename from examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/MyBatisTest.java rename to examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/AccountDaoTest.java index 99feb9904176b9a7a348841ff7afb22618b37e24..f8ff2059c4f373ed89568b43b5ea1d9ef99ae5ab 100644 --- a/examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/MyBatisTest.java +++ b/examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/AccountDaoTest.java @@ -9,6 +9,8 @@ import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.transaction.TransactionConfiguration; +import org.springside.examples.showcase.data.UserData; +import org.springside.examples.showcase.entity.Team; import org.springside.examples.showcase.entity.User; import org.springside.modules.test.spring.SpringTransactionalTestCase; @@ -16,14 +18,14 @@ import com.google.common.collect.Maps; @ContextConfiguration(locations = { "/applicationContext.xml" }) @TransactionConfiguration(transactionManager = "defaultTransactionManager") -public class MyBatisTest extends SpringTransactionalTestCase { +public class AccountDaoTest extends SpringTransactionalTestCase { @Autowired - private AccountDao accountMapper; + private AccountDao accountDao; @Test public void getUser() throws Exception { - User user = accountMapper.getUser(1L); + User user = accountDao.getUser(1L); assertEquals("admin", user.getLoginName()); } @@ -31,8 +33,34 @@ public class MyBatisTest extends SpringTransactionalTestCase { public void searchUser() throws Exception { Map parameter = Maps.newHashMap(); parameter.put("name", "Admin"); - List result = accountMapper.searchUser(parameter); + List result = accountDao.searchUser(parameter); assertEquals(1, result.size()); assertEquals("admin", result.get(0).getLoginName()); } + + @Test + public void getTeamWithDetail() throws Exception { + Team team = accountDao.getTeamWithDetail(1L); + assertEquals("Dolphin", team.getName()); + assertEquals("Admin", team.getMaster().getName()); + } + + @Test + public void createAndDeleteUser() throws Exception { + //create + int count = countRowsInTable("ss_user"); + User user = UserData.randomUser(); + accountDao.saveUser(user); + Long id = user.getId(); + + assertEquals(count + 1, countRowsInTable("ss_user")); + User result = accountDao.getUser(id); + assertEquals(user.getLoginName(), result.getLoginName()); + + //delete + accountDao.deleteUser(id); + assertEquals(count, countRowsInTable("ss_user")); + assertNull(accountDao.getUser(id)); + } + } diff --git a/examples/showcase/src/test/resources/data/sample-data.xml b/examples/showcase/src/test/resources/data/sample-data.xml index 2f2c602fff837344c850ecc4de4c238c7073291c..46a080ae12ba0efe1ab4d755e1b6e13d274af74c 100644 --- a/examples/showcase/src/test/resources/data/sample-data.xml +++ b/examples/showcase/src/test/resources/data/sample-data.xml @@ -15,5 +15,5 @@ - +