Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
java镜像
Springside4
提交
35272324
S
Springside4
项目概览
后端镜像
/
java镜像
/
Springside4
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Springside4
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
35272324
编写于
8月 07, 2012
作者:
C
Calvin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#57 在扫描MyBatis接口时,加入annotation class的限定,适合dao放在不同的模块目录的情况
上级
06820b54
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
46 addition
and
26 deletion
+46
-26
examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/MyBatisRepository.java
...amples/showcase/repository/mybatis/MyBatisRepository.java
+17
-0
examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/TeamMybatisDao.java
.../examples/showcase/repository/mybatis/TeamMybatisDao.java
+2
-1
examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/UserMybatisDao.java
.../examples/showcase/repository/mybatis/UserMybatisDao.java
+5
-4
examples/showcase/src/main/java/org/springside/examples/showcase/service/AccountEffectiveService.java
...de/examples/showcase/service/AccountEffectiveService.java
+5
-5
examples/showcase/src/main/resources/applicationContext.xml
examples/showcase/src/main/resources/applicationContext.xml
+5
-4
examples/showcase/src/main/resources/mybatis/TeamMapper.xml
examples/showcase/src/main/resources/mybatis/TeamMapper.xml
+1
-1
examples/showcase/src/main/resources/mybatis/UserMapper.xml
examples/showcase/src/main/resources/mybatis/UserMapper.xml
+4
-4
examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/TeamMybatisDaoTest.java
...mples/showcase/repository/mybatis/TeamMybatisDaoTest.java
+1
-1
examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/UserMybatisDaoTest.java
...mples/showcase/repository/mybatis/UserMybatisDaoTest.java
+6
-6
未找到文件。
examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/MyBatisRepository.java
0 → 100644
浏览文件 @
35272324
package
org.springside.examples.showcase.repository.mybatis
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* 标识MyBatis的DAO,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。
*
* @author calvin
*
*/
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
TYPE
)
public
@interface
MyBatisRepository
{
}
examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/TeamMybatisDao.java
浏览文件 @
35272324
...
...
@@ -8,7 +8,8 @@ import org.springside.examples.showcase.entity.Team;
*
* @author calvin
*/
@MyBatisRepository
public
interface
TeamMybatisDao
{
public
Team
get
Team
WithDetail
(
Long
id
);
public
Team
getWithDetail
(
Long
id
);
}
examples/showcase/src/main/java/org/springside/examples/showcase/repository/mybatis/UserMybatisDao.java
浏览文件 @
35272324
...
...
@@ -11,14 +11,15 @@ import org.springside.examples.showcase.entity.User;
*
* @author calvin
*/
@MyBatisRepository
public
interface
UserMybatisDao
{
public
User
get
User
(
Long
id
);
public
User
get
(
Long
id
);
public
List
<
User
>
search
User
(
Map
<
String
,
Object
>
parameters
);
public
List
<
User
>
search
(
Map
<
String
,
Object
>
parameters
);
public
void
save
User
(
User
user
);
public
void
save
(
User
user
);
public
void
delete
User
(
Long
id
);
public
void
delete
(
Long
id
);
}
examples/showcase/src/main/java/org/springside/examples/showcase/service/AccountEffectiveService.java
浏览文件 @
35272324
...
...
@@ -36,7 +36,7 @@ public class AccountEffectiveService {
private
final
JsonMapper
jsonMapper
=
JsonMapper
.
nonDefaultMapper
();
public
Team
getTeamWithDetail
(
Long
id
)
{
return
teamDao
.
get
Team
WithDetail
(
id
);
return
teamDao
.
getWithDetail
(
id
);
}
/**
...
...
@@ -49,7 +49,7 @@ public class AccountEffectiveService {
String
jsonString
=
memcachedClient
.
get
(
key
);
if
(
jsonString
==
null
)
{
user
=
userDao
.
get
User
(
id
);
user
=
userDao
.
get
(
id
);
if
(
user
!=
null
)
{
jsonString
=
jsonMapper
.
toJson
(
user
);
memcachedClient
.
set
(
key
,
MemcachedObjectType
.
USER
.
getExpiredTime
(),
jsonString
);
...
...
@@ -64,16 +64,16 @@ public class AccountEffectiveService {
Map
<
String
,
Object
>
parameters
=
Maps
.
newHashMap
();
parameters
.
put
(
"loginName"
,
loginName
);
parameters
.
put
(
"name"
,
name
);
return
userDao
.
search
User
(
parameters
);
return
userDao
.
search
(
parameters
);
}
@Transactional
public
void
saveUser
(
User
user
)
{
userDao
.
save
User
(
user
);
userDao
.
save
(
user
);
}
@Transactional
public
void
deleteUser
(
Long
id
)
{
userDao
.
delete
User
(
id
);
userDao
.
delete
(
id
);
}
}
examples/showcase/src/main/resources/applicationContext.xml
浏览文件 @
35272324
...
...
@@ -39,20 +39,21 @@
</property>
</bean>
<!-- Spring Data Jpa配置 -->
<!-- Spring Data Jpa配置
, 扫描base-package下所有继承于Repository<T,ID>的接口, 动态生成实现类
-->
<jpa:repositories
base-package=
"org.springside.examples.showcase"
transaction-manager-ref=
"defaultTransactionManager"
entity-manager-factory-ref=
"entityManagerFactory"
/>
<!-- MyBatis配置 -->
<bean
id=
"sqlSessionFactory"
class=
"org.mybatis.spring.SqlSessionFactoryBean"
>
<property
name=
"dataSource"
ref=
"dataSource"
/>
<!-- 自动扫描目录,
省掉Configuration.xml里的手工配置Class名与
缩写 -->
<!-- 自动扫描目录,
省掉Configuration.xml里的手工配置Class名及其
缩写 -->
<property
name=
"typeAliasesPackage"
value=
"org.springside.examples.showcase.entity"
/>
<!-- 没有把mapper文件放到与dao相同的深层目录,显式指定Mapper文件位置 -->
<property
name=
"mapperLocations"
value=
"classpath:/mybatis/*Mapper.xml"
/>
</bean>
<!--
在指定扫描所有接口, 动态生成MyBatis Dao接口实现
-->
<!--
扫描basePackage下所有接口, 动态生成MyBatis Dao接口实现
-->
<bean
class=
"org.mybatis.spring.mapper.MapperScannerConfigurer"
>
<property
name=
"basePackage"
value=
"org.springside.examples.showcase.repository.mybatis"
/>
<property
name=
"basePackage"
value=
"org.springside.examples.showcase"
/>
<property
name=
"annotationClass"
value=
"org.springside.examples.showcase.repository.mybatis.MyBatisRepository"
/>
</bean>
<!-- 事务管理器配置, Jpa单数据源事务 -->
...
...
examples/showcase/src/main/resources/mybatis/TeamMapper.xml
浏览文件 @
35272324
...
...
@@ -19,7 +19,7 @@
</resultMap>
<!-- 获取部门详细信息, 输出用resultMap关联嵌套对象 -->
<select
id=
"get
Team
WithDetail"
parameterType=
"int"
resultMap=
"teamDetailMap"
>
<select
id=
"getWithDetail"
parameterType=
"int"
resultMap=
"teamDetailMap"
>
select t.id as team_id,
t.name as team_name,
m.id as master_id,
...
...
examples/showcase/src/main/resources/mybatis/UserMapper.xml
浏览文件 @
35272324
...
...
@@ -6,7 +6,7 @@
<!--
获取用户: 输出直接映射到对象, login_name列要"as loginName"以方便映射 ,team_id as "team.id"创建team对象并赋值
-->
<select
id=
"get
User
"
parameterType=
"int"
resultType=
"User"
>
<select
id=
"get"
parameterType=
"int"
resultType=
"User"
>
select id, name, email,
login_name as loginName,
team_id as "team.id"
...
...
@@ -15,7 +15,7 @@
</select>
<!-- 查询用户,演示: 1.输入用map传入多个参数 2.<where>语句, 智能添加where和and关键字 3.输出直接映射对象 -->
<select
id=
"search
User
"
parameterType=
"map"
resultType=
"User"
>
<select
id=
"search"
parameterType=
"map"
resultType=
"User"
>
select id, name, email,
login_name as loginName,
team_id as "team.id"
...
...
@@ -31,7 +31,7 @@
</select>
<!-- 插入用户: 1.由数据库生成id并赋值到user对象 2.输入用对象, 嵌套属性表达式#{team.id} -->
<insert
id=
"save
User
"
parameterType=
"User"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
<insert
id=
"save"
parameterType=
"User"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into ss_user (
login_name, name, password, email, team_id)
values (
...
...
@@ -40,7 +40,7 @@
</insert>
<!-- 删除用户 -->
<delete
id=
"delete
User
"
parameterType=
"int"
>
<delete
id=
"delete"
parameterType=
"int"
>
delete from ss_user where id=#{id}
</delete>
</mapper>
examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/TeamMybatisDaoTest.java
浏览文件 @
35272324
...
...
@@ -20,7 +20,7 @@ public class TeamMybatisDaoTest extends SpringTransactionalTestCase {
@Test
public
void
getTeamWithDetail
()
throws
Exception
{
Team
team
=
teamDao
.
get
Team
WithDetail
(
1L
);
Team
team
=
teamDao
.
getWithDetail
(
1L
);
assertEquals
(
"Dolphin"
,
team
.
getName
());
assertEquals
(
"Admin"
,
team
.
getMaster
().
getName
());
}
...
...
examples/showcase/src/test/java/org/springside/examples/showcase/repository/mybatis/UserMybatisDaoTest.java
浏览文件 @
35272324
...
...
@@ -26,7 +26,7 @@ public class UserMybatisDaoTest extends SpringTransactionalTestCase {
@Test
public
void
getUser
()
throws
Exception
{
User
user
=
userDao
.
get
User
(
1L
);
User
user
=
userDao
.
get
(
1L
);
assertEquals
(
"admin"
,
user
.
getLoginName
());
}
...
...
@@ -34,7 +34,7 @@ public class UserMybatisDaoTest extends SpringTransactionalTestCase {
public
void
searchUser
()
throws
Exception
{
Map
<
String
,
Object
>
parameter
=
Maps
.
newHashMap
();
parameter
.
put
(
"name"
,
"Admin"
);
List
<
User
>
result
=
userDao
.
search
User
(
parameter
);
List
<
User
>
result
=
userDao
.
search
(
parameter
);
assertEquals
(
1
,
result
.
size
());
assertEquals
(
"admin"
,
result
.
get
(
0
).
getLoginName
());
}
...
...
@@ -44,17 +44,17 @@ public class UserMybatisDaoTest extends SpringTransactionalTestCase {
//create
int
count
=
countRowsInTable
(
"ss_user"
);
User
user
=
UserData
.
randomUser
();
userDao
.
save
User
(
user
);
userDao
.
save
(
user
);
Long
id
=
user
.
getId
();
assertEquals
(
count
+
1
,
countRowsInTable
(
"ss_user"
));
User
result
=
userDao
.
get
User
(
id
);
User
result
=
userDao
.
get
(
id
);
assertEquals
(
user
.
getLoginName
(),
result
.
getLoginName
());
//delete
userDao
.
delete
User
(
id
);
userDao
.
delete
(
id
);
assertEquals
(
count
,
countRowsInTable
(
"ss_user"
));
assertNull
(
userDao
.
get
User
(
id
));
assertNull
(
userDao
.
get
(
id
));
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录