小编Ale*_*sky的帖子

在多个mapper.xml中重用MyBatis ResultMap

我想重新使用来自不同*Mapper.xml文件的特定文件,这些文件都以某种方式读取相同的对象.

我有一个名为Project的数据库表,我创建了以下resultMap:

<resultMap id="ProjectMap" type="com.model.Project">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="client_prj_no" jdbcType="VARCHAR" property="clientPrjNo" />
    <result column="notes" jdbcType="VARCHAR" property="notes" />
    <result column="start_date" jdbcType="TIMESTAMP" property="startDate" />
    ...
<resultMap>
Run Code Online (Sandbox Code Playgroud)

它在ProjectMapper.xml中工作得很好,但是,现在我想创建一个ClientWithProjectsMapper.xml,我想要SELECT*FROM CLIENT,PROJECT,其中PROJECT.CLIENT_ID = CLIENT.ID并且Client对象返回一个List对象.换句话说,我想用一个SQL获取ClientWithProjects.

在我的映射中,我想重用我在ProjectMapper.xml中定义的ProjectMap(没有复制/粘贴),但我不知道如何实现这一点.

我可以将ProjectMap分解为一个单独的文件,但我没有在MyBatis中找到#include其他文件的任何工具.

关于如何做到这一点的任何想法?(我正在使用Maven,是否有任何插件可以过滤寻找#include等文件,并将文件内容直接包含在正在处理的文件中?).

谢谢.

-AP_

refactoring resultset mappers mybatis

17
推荐指数
1
解决办法
2万
查看次数

我可以使用PropertyPlaceholderConfigurer在运行时在String上执行属性替换吗?

在Spring配置的一个区域中,我们使用:

applicationContext.xml:

<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" lazy-init="true">
    <property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

但是,ehcache.xml不是标准的spring bean配置文件,而是包含$ {ehcache.providerURL},我们要根据我们在其他地方使用PropertyPlaceHolderConfigurer配置的内容替换它们:

ehcache.xml:

<cacheManagerPeerProviderFactory
   ...
   providerURL=${ehcache.providerURL}
   ...
</cacheManagerPeerProviderFactory>
Run Code Online (Sandbox Code Playgroud)

我可以使用Maven/profile/filter组合,但这会创建一个特定于它正在构建的环境的构建.我真正想要做的是在运行时预处理ehcache.xml,根据PropertyPlaceHolderConfigurer读取的属性执行替换,然后将结果传递给EhCacheManagerBean.

此时,我正在考虑以某种方式复制@Value注释背后的功能,因为它可以替换"bla bla bla $ {property} bla bla bla",除非我需要在从磁盘读取文件后执行此操作.

关于如何解决这个问题的任何想法?

谢谢.-AP_

spring ehcache

1
推荐指数
1
解决办法
4731
查看次数

标签 统计

ehcache ×1

mappers ×1

mybatis ×1

refactoring ×1

resultset ×1

spring ×1