用map实现sql拼接

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

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

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

public abstract class BaseEntity  {

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

   public void setSqlMap(Map 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能取到

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

你可能感兴趣的:(用map实现sql拼接)