自己写了几个字符串操作函数 @Bizlet("")这个是什么语法呀。没有用过。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道这些方法是用来干嘛的我感觉有些在设计上不是很好,比如有 String[] 参数的代码,不管是为 null 还是 length 为 0 都返回空字符串! 我整了个应用于Hibernate的通用查询条件 FilterInfo成员1. List<FilterItem> items; FilterItem(String propertiy,Object value,CompareType cType)2. StringBuffer maskString; // 格式 #0 AND #1 AND (#2 OR #3)方法1. addItem(FilterItem item,"AND"/"OR") //添加单个条件项2. margeFilter(FilterInfo,"AND"/"OR") //将另一个过滤融合到自身中(自动如上所有,加括号)3. getFilterString() //生成过滤SQL 如 name=? AND number = ? AND (longnumber= ? OR longnumber like ?)4. getFilterValues() //取得SQL对应的占位符的所有参数这样使用 Hibernate的话,所有的对象都可以使用一个查询Dao 那个@Bizlet("")是普元Eos6.0里边的注释这是函数主要是用来生成sql语句的,因为在我们的框架中没有hibenate这样的框架,所以需要自己拼Sql有的时候不是PrepareStatement的就可以搞定的,而MessageFormat也不能完全搞定,好多时候我需要一个函数支持如下的模板Map<String,String> map=new HashMap<String,String>();map.put("id","id");map.put("pk","pk");map.put("fk","fk");String temp="insert into tableName values(id,pk,fk) " +"values('{id}','{pk}','{fk}') ";String sql=format(temp,map);还有时候需要支持如下的功能以便于生成sqlString ids={"id-1","id-2","id-3","id-4"};String temp="update mytable " +"set value='{value}' " +"where id in ({ids})";Map<String,String> map=new HashMap<String,String>();map.put("value","new value");map.put("ids",join(ids,",","''{0}''"));String sql=format(temp,map);可能好多人都一只用Hibenate这样的框架,用面向对象的方式来开发,平时用不到这样自己去拼Sql。我们没有办法,这些工作成天做,只能自己想办法提高效率了 楼主幸苦了。不过org.apache.commons.lang.StringUtils类join方法包含了上面的部分功能。 Apache那个类包我知道,也用过两次,但里边的功能不能完全满足我们的要求而且就为了那一个函数引入那么大一个jar包感觉有点得不偿失 又调整了下,感觉这样会更好些,原来那样设计的话MessageFormat.format的好多特性都不支持了 public static void main(String[] args){ Map<String,Object> map=new HashMap<String,Object>(); map.put("id" , "id-1"); map.put("name" , "王建波"); map.put("age" , 27); String temp1="inser into users(guid,id,name,age) values(" +"'newid()',''{id}'',''{name}'',{age,number,#.00}" +")", temp2="inser into users(guid,id,name,age) values(" +"'newid()',''{0}'',''{1}'',{2,number,#.00}" +")"; System.out.println( format(temp1,map)); System.out.println( format(temp1,map).equals( MessageFormat.format( temp2, map.get("id"), map.get("name"), map.get("age") ) )); } public static String format( String temp, Map<String,Object> pramaMap){ String regex="''|'.*?'|\\{(.*?)(,.*?)?\\}|[^\\{\\}]+"; List<Object> paramList=new ArrayList<Object>(); StringBuffer buff=new StringBuffer(); Pattern p=Pattern.compile(regex); Matcher m=p.matcher(temp); String paramName,paramSets; Object paramValue; int paramIdx=0; while(m.find()){ if(m.group(1)==null){ buff.append(m.group()); }else{ paramName=m.group(1); paramValue=pramaMap.get(paramName.trim()); paramSets=m.group(2)!=null?m.group(2):""; paramList.add(paramValue); buff.append("{"+paramIdx+paramSets+"}"); paramIdx++; } } return MessageFormat.format( buff.toString(), paramList.toArray() ); } httpURLConnection 登录asp.net网站 相当奇怪的IO问题 创建对象和清理对象内容哪一个好?? jtable与jscrollpane高度一致 请教关于Keyboard.readInt();问题 求助:在哪里能下载到javax.management包。急!急! 求大神看看我写的这个程序有无线程问题 如何读取泛型的类型 给定一个字符串String str=“aAbebBssE”,自己实现以个算法,输出字符串为“AaBbbEess” 一个关于二叉树的简单问题,菜鸟求救啊啊 sun 的java认证有用吗?有谁考过的,谈下体会。 线程死锁
成员
1. List<FilterItem> items;
FilterItem(String propertiy,Object value,CompareType cType)
2. StringBuffer maskString; // 格式 #0 AND #1 AND (#2 OR #3)
方法
1. addItem(FilterItem item,"AND"/"OR") //添加单个条件项
2. margeFilter(FilterInfo,"AND"/"OR") //将另一个过滤融合到自身中(自动如上所有,加括号)
3. getFilterString() //生成过滤SQL 如 name=? AND number = ? AND (longnumber= ? OR longnumber like ?)
4. getFilterValues() //取得SQL对应的占位符的所有参数
这样使用 Hibernate的话,所有的对象都可以使用一个查询Dao
这是函数主要是用来生成sql语句的,因为在我们的框架中没有hibenate这样的框架,所以需要自己拼Sql
有的时候不是PrepareStatement的就可以搞定的,而MessageFormat也不能完全搞定,好多时候我需要一个
函数支持如下的模板
Map<String,String> map=new HashMap<String,String>();
map.put("id","id");
map.put("pk","pk");
map.put("fk","fk");String temp="insert into tableName values(id,pk,fk) "
+"values('{id}','{pk}','{fk}') ";String sql=format(temp,map);还有时候需要支持如下的功能以便于生成sql
String ids={"id-1","id-2","id-3","id-4"};
String temp="update mytable "
+"set value='{value}' "
+"where id in ({ids})";Map<String,String> map=new HashMap<String,String>();
map.put("value","new value");
map.put("ids",join(ids,",","''{0}''"));
String sql=format(temp,map);可能好多人都一只用Hibenate这样的框架,用面向对象的方式来开发,平时用不到这样
自己去拼Sql。我们没有办法,这些工作成天做,只能自己想办法提高效率了
不过org.apache.commons.lang.StringUtils类join方法包含了上面的部分功能。
而且就为了那一个函数引入那么大一个jar包感觉有点得不偿失
都不支持了
public static void main(String[] args){
Map<String,Object> map=new HashMap<String,Object>();
map.put("id" , "id-1");
map.put("name" , "王建波");
map.put("age" , 27);
String temp1="inser into users(guid,id,name,age) values("
+"'newid()',''{id}'',''{name}'',{age,number,#.00}"
+")",
temp2="inser into users(guid,id,name,age) values("
+"'newid()',''{0}'',''{1}'',{2,number,#.00}"
+")";
System.out.println( format(temp1,map));
System.out.println( format(temp1,map).equals(
MessageFormat.format(
temp2,
map.get("id"),
map.get("name"),
map.get("age")
)
));
}
public static String format(
String temp,
Map<String,Object> pramaMap){
String regex="''|'.*?'|\\{(.*?)(,.*?)?\\}|[^\\{\\}]+";
List<Object> paramList=new ArrayList<Object>();
StringBuffer buff=new StringBuffer();
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(temp);
String paramName,paramSets;
Object paramValue;
int paramIdx=0;
while(m.find()){
if(m.group(1)==null){
buff.append(m.group());
}else{
paramName=m.group(1);
paramValue=pramaMap.get(paramName.trim());
paramSets=m.group(2)!=null?m.group(2):"";
paramList.add(paramValue);
buff.append("{"+paramIdx+paramSets+"}");
paramIdx++;
}
}
return MessageFormat.format(
buff.toString(),
paramList.toArray()
);
}