activiti5.20简单介绍(九) -- 本地化查询

1.介绍

activiti中封装了一些实用的API,但是在实际的开发过程中,难免会有一些要求无法达到,这个时候activiti提供了一种直接面向数据库的操作--本地化查询,即使用sql语句对数据库进行查询。


2.使用

1)ManagementService服务

这个服务有一些辅助性的工具,可以使得我们不必知道表名,通过API获得表名,获得表中的字段等信息。

		//得到表名
		String tableName = managementService.getTableName(Task.class);
		System.out.println("Task对象对应的表名:"+tableName);
		
		HistoryService historyService = engine.getHistoryService();
		
		String htname = managementService.getTableName(HistoricProcessInstance.class);
		//获得数据库表中各列名
		List<String> list = managementService.getTableMetaData(htname).getColumnNames();


 

(2)查询

a) 拼装sql

将需要查询的数据通过sql语句表达出来,其中需要一些复杂查询的话需要一定的逻辑将sql语句拼装出来,将得到的表名和列名拼装进去,得到完整的sql;

b) 参数代替

为了避免sql注入,可以使用#{parameterName}的方式在sql语句中进行占位,然后通过方法将参数替换。

		List<HistoricProcessInstance> l1 = historyService.createNativeHistoricProcessInstanceQuery()
				.sql("select * from "+htname+" where "+list.get(0)+" = #{a}").parameter("a", "1").list();
		
		System.out.println(l1);



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值