From 5fdefc6e4c419ed208ffa41bbd5ca93351301d95 Mon Sep 17 00:00:00 2001 From: Calvin Date: Tue, 31 Jul 2012 02:43:45 +0800 Subject: [PATCH] =?UTF-8?q?#57=20=E5=B0=86MyBatis=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=8A=A0=E5=85=A5showcase,=20=E8=80=8C=E4=B8=94=E5=85=85?= =?UTF-8?q?=E5=88=86=E4=BD=BF=E7=94=A8=E4=BA=86MyBatis-Spring=EF=BC=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=B8=8E=E5=8E=9F=E6=9D=A5=E6=AF=94=E6=9B=B4?= =?UTF-8?q?=E6=BC=82=E4=BA=AE=EF=BC=8C=E7=9C=81=E6=8E=89=E4=BA=86DAO?= =?UTF-8?q?=E7=9A=84=E5=AE=9E=E7=8E=B0=E5=92=8CConfiugration.xml=E9=87=8C?= =?UTF-8?q?=E7=9A=84alias=E5=AE=9A=E4=B9=89,=20Dao=E7=9A=84=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E4=B9=9F=E4=B8=8D=E7=94=A8=E5=8F=AB=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E4=B8=8D=E5=96=9C=E6=AC=A2=E7=9A=84XXXMapper.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examples/showcase/entity/Team.java | 11 +++++- .../examples/showcase/entity/User.java | 12 +++++++ .../repository/mybatis/AccountDao.java | 2 +- .../soap/AccountWebServiceImpl.java | 4 +-- .../main/resources/mybatis/AccountMapper.xml | 4 +-- .../src/main/resources/sql/h2/schema.sql | 14 ++++---- .../{MyBatisTest.java => AccountDaoTest.java} | 36 ++++++++++++++++--- .../src/test/resources/data/sample-data.xml | 2 +- 8 files changed, 67 insertions(+), 18 deletions(-) rename examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/{MyBatisTest.java => AccountDaoTest.java} (50%) 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 c10eb7cb..9798499f 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 14b6ceb3..b3817f60 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 a8b7fe4c..afda86f2 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 adaa4e6d..5f34d12c 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 2dd53779..8864f68c 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 a43f8aca..3168b325 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 99feb990..f8ff2059 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 2f2c602f..46a080ae 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 @@ - + -- GitLab