188 - 基于注解的映射语句
Posted 分享牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了188 - 基于注解的映射语句相关的知识,希望对你有一定的参考价值。
使用基于注解的映射语句时首先要做的是创建一个MyBatis映射器类。例如,假设对于一些使用情况而言,不需要整个任务数据,而只是一小部分。一个Mapper可以做到这一点,看起来如下:
public interface MyTestMapper
@Select("SELECT ID_ as id, NAME_ as name, CREATE_TIME_ as createTime FROM ACT_RU_TASK")
List<Map<String, Object>> selectTasks();
必须将此映射器提供给Process Engine配置,如下所示:
...
<property name="customMybatisMappers">
<set>
<value>org.flowable.standalone.cfg.MyTestMapper</value>
</set>
</property>
...
注意这是一个接口。底层的MyBatis框架将创建一个可以在运行时使用的实例。另请注意,该方法的返回值不是键入的,而是一个映射列表(对应于具有列值的行列表)。如果需要,可以使用MyBatis映射器进行打字。
要执行上面的查询,必须使用managementService.executeCustomSql方法。这个方法需要一个CustomSqlExecution实例。这是一个隐藏引擎的内部位,否则需要使其工作的包装。
不幸的是,Java泛型使其可读性低于原来的可读性。下面的两个泛型类型是映射器类和返回类型类。但是,实际的逻辑只是调用映射器方法并返回结果(如果适用)。
CustomSqlExecution<MyTestMapper, List<Map<String, Object>>> customSqlExecution =
new AbstractCustomSqlExecution<MyTestMapper, List<Map<String, Object>>>(MyTestMapper.class)
public List<Map<String, Object>> execute(MyTestMapper customMapper)
return customMapper.selectTasks();
;
List<Map<String, Object>> results = managementService.executeCustomSql(customSqlExecution);
上面列表中的Map条目只包含id,name和create time,而不是完整的任务对象。
使用上述方法时,任何SQL都是可能的。另一个更复杂的例子:
@Select(
"SELECT task.ID_ as taskId, variable.LONG_ as variableValue FROM ACT_RU_VARIABLE variable",
"inner join ACT_RU_TASK task on variable.TASK_ID_ = task.ID_",
"where variable.NAME_ = #variableName"
)
List<Map<String, Object>> selectTaskWithSpecificVariable(String variableName);
使用此方法,任务表将与变量表连接。只有变量具有特定名称的地方才被保留,并返回任务ID和相应的数值。有关使用基于Annotation的映射语句的工作示例,请检查文件夹src / test / java / org / flowable / standalone / cfg /和src / test / resources中的单元测试org.flowable.standalone.cfg.CustomMybatisMapperTest和其他类和资源/组织/流动性/独立/ cfg /中
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
以上是关于188 - 基于注解的映射语句的主要内容,如果未能解决你的问题,请参考以下文章
华为路由器r28-11 NAT配置命令?想把端口e0连接的内网192.168.2.x 映射到188.140.128.2这一特定ip地址。
Hibernate基于注解的双向one-to-many映射关系的实现