最近在写毕设,用到MyBatis,发现里面有个动态SQL的XML判定
但是,这里不是关于MyBatis后台实现的,呵呵,那个有机会再去看看后台实现
翻出去年实习写的一个半成品
需求:
有一系列从Oracle中导出多个txt数据文件,但是新的项目需要的是这几张表中某几个字段的组合,我写了个SQL语句生成器,半成品一直放着没时间完善。即使用XML进行配置,根据配置信息提取对应项的对应值,并过滤,最后组成插入新表的SQL语句
过滤这个环节用到了在XML中配置布尔表达式
例如:[这个是我当时定义的SW代表startsWith EW代表endWith EQ代表equals]
因为数据量是十分大的
我实现的思想是
1.根据配置文件信息生成布尔表达式组合
2.写一个解析判定组合true/false的算法
3.一个组合字符串对应一个布尔值
在文件输入时,根据判定拿到每个配置项的true/false
找到这种组合下是否通过过滤
通过,数据放入,否则,数据丢弃
首先,生成布尔情况组合
需求:输入XML中配置布尔判定的个数
输出:布尔组合
例如,输入2
输出 00
01
10
11
实现思想,
循环整数[0-pow(2,i)) 左闭右开 i为个数,例如输入2,有两个布尔
则循环 0 1 2 3
四个数的二进制组合刚好对应
00
01
10
11
以下是代码:
好了
生成各种组合之后,我们接下来需要写一个计算布尔表达式最终结果的算法
下一篇整理出来

这篇博客讲述了如何根据XML配置生成布尔表达式的组合,用于数据过滤。作者通过一个例子展示了如何根据XML中定义的条件(如startsWith、endWith、equals)生成不同布尔值的组合,以决定数据是否通过过滤。文章还提供了Java代码实现,生成指定数量布尔变量的所有可能组合。

1万+

被折叠的 条评论
为什么被折叠?



