用map实现sql拼接

今天在写二维报表(某列的内容随着帐号不同会变化)的时候想到了sql拼接。

首先你需要在你的实体类中定义一个map集合,看jeesit的源码它是把这个属性定义在基类中,一个意思,然后通过这个类的属性去获取就行了,下面的代码有些麻烦,通过上面这句话你可以写出你想要的拼接。

大概是这样定义的(BaseEntity<T>可以代表你继承的任何实例)

public abstract class BaseEntity<T>  {

    /** 自定义SQL(SQL标识,SQL内容)*/
   protected Map<String, String> sqlMap;
   @JsonIgnore
   @XmlTransient
   public Map<String, String> getSqlMap() {
   if (sqlMap == null){
	   sqlMap = Maps.newHashMap();
	}
	   return sqlMap;
    }

   public void setSqlMap(Map<String, String> sqlMap) {
       this.sqlMap = sqlMap;
  }
}

我们在逻辑处理的时候应该这样用

//为了方便我们写个公共方法,很明显是给map存储一个字符串就行了
public static void dataScopeFilter(BaseEntity<?> entity, String sqlMapKey,String sql) {
		
	entity.getSqlMap().put(sqlMapKey, sql.toString());
		
}
//底下代表BaseEntity将会是一个bc04的实例对象
public Rp01 get0() {
		
		String sql = " select * from bc04 "
		dataScopeFilter(bc04, "dnsf", sql);
}



在mybatis这样通过键值对拼进去就行了,但是只有在bc04能取到

<select id="outjob" resultType="java.lang.Integer">
     ${sqlMap.dnsf}
</select>

如果还有不懂的想看看源码,直接下载jeesite源码查看他的基类,并搜索dataScopeFilter就能看到整个过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子鞋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值