- 浏览: 236053 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
月度银墙:
wangxiang243 写道不错 !但是ext4中六月和十二 ...
ext2,3,和4 版本 只显示年月的日期插件 -
38123978:
你好,我最近在看cassandra的性能,我想问一下5000万 ...
Cassandra学习笔记3 -
zhaojinmeng:
您好楼主,extjs5要怎么扩展啊?求指导
ext2,3,和4 版本 只显示年月的日期插件 -
love_wting:
为什么下拉框的表格样式显示了,数据访问json也从数据库中取到 ...
Extjs 下拉grid -
laungcisin:
yangxiutian 写道另外Ext4.2.1还故意把x-m ...
ext2,3,和4 版本 只显示年月的日期插件
SQL动态封装工具类
转自 http://www.iteye.com/topic/370625
BaseSelector.java
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- /**
- * SQL动态封装工具
- *
- * simple::
- *
- * BaseSelector select = new BaseSelector();
- * select.setCommand("select * from stat_user ");
- * select.createCriteria().andEqualTo("org_code", "YZ1201")
- * .andGreaterThanOrEqualTo("day_code", "2009-01-01")
- * .andLessThanOrEqualTo("day_code", "2009-03-31");
- * List<Map> rowset = SqlTemplate.executeQuery(select.toSql(),new Object[] {});
- *
- * output:select * from stat_user where org_code = 'YZ1201' and day_code >= '2009-01-01' and day_code <= '2009-03-31'
- *
- */
- public class BaseSelector {
- /**
- * sql语句
- */
- private String command;
- /**
- * 排序字段
- */
- protected String orderByClause;
- /**
- * sql条件
- */
- protected List<Criteria> oredCriteria;
- public String getCommand()
- {
- return command;
- }
- public void setCommand(String command)
- {
- this.command = command;
- }
- public BaseSelector() {
- oredCriteria = new ArrayList<Criteria>();
- }
- protected BaseSelector(BaseSelector example) {
- this.orderByClause = example.orderByClause;
- this.oredCriteria = example.oredCriteria;
- }
- /**
- * 生成最终sql语句
- */
- public String toSql()
- {
- if(oredCriteria==null||oredCriteria.size()<=0)
- return command;
- StringBuffer sqlAll = new StringBuffer();
- sqlAll.append(command);
- if (command != null && command.toUpperCase().indexOf(" WHERE ") == -1)
- sqlAll.append(" WHERE ");
- else
- sqlAll.append(" AND ");
- for (Criteria cri : oredCriteria)
- {
- if(!cri.isValid())
- continue;
- sqlAll.append("(");
- StringBuffer sql = new StringBuffer();
- criteriaWithoutValueSql(sql,cri.criteriaWithoutValue);
- criteriaWithSingleValueSql(sql,cri.criteriaWithSingleValue);
- criteriaWithListValueSql(sql,cri.criteriaWithListValue);
- criteriaWithBetweenValueSql(sql,cri.criteriaWithBetweenValue);
- sqlAll.append(sql.toString());
- sqlAll.append(")");
- sqlAll.append(" or ");
- }
- return sqlAll.substring(0, sqlAll.length()-4);
- }
- @SuppressWarnings("unchecked")
- private String criteriaWithoutValueSql(StringBuffer sql,List list)
- {
- if(list==null)
- return "";
- int n = list.size();
- for (int i = 0;i<n;i++)
- {
- sql.append(list.get(i));
- if(i<n-1)
- sql.append(" and ");
- }
- return sql.toString();
- }
- @SuppressWarnings("unchecked")
- private String criteriaWithSingleValueSql(StringBuffer sql,List list)
- {
- if(list==null)
- return "";
- if (sql.length() > 0&&list.size()>0)
- sql.append(" and ");
- int n = list.size();
- for (int i = 0;i<n;i++)
- {
- Map map = (Map) list.get(i);
- sql.append(map.get("condition")).append(map.get("value"));
- if(i<n-1)
- sql.append(" and ");
- }
- return sql.toString();
- }
- @SuppressWarnings("unchecked")
- private String criteriaWithListValueSql(StringBuffer sql,List list)
- {
- if(list==null)
- return "";
- if (sql.length() > 0&&list.size()>0)
- sql.append(" and ");
- int n = list.size();
- for (int i = 0;i<n;i++)
- {
- Map map = (Map) list.get(i);
- sql.append(map.get("condition")).append("("+join((Collection) map.get("values"),",")+")");
- if(i<n-1)
- sql.append(" and ");
- }
- return sql.toString();
- }
- @SuppressWarnings("unchecked")
- private String criteriaWithBetweenValueSql(StringBuffer sql,List list)
- {
- if(list==null)
- return "";
- if (sql.length() > 0&&list.size()>0)
- sql.append(" and ");
- int n = list.size();
- for (int i = 0;i<n;i++)
- {
- Map map = (Map) list.get(i);
- sql.append(map.get("condition")).append(join((Collection) map.get("values")," and "));
- if(i<n-1)
- sql.append(" and ");
- }
- return sql.toString();
- }
- @SuppressWarnings("unchecked")
- private String join(Collection list,String spe)
- {
- if(list==null)
- return "";
- Object array[] = list.toArray();
- StringBuffer buff = new StringBuffer();
- for (int i = 0; i < array.length; i++)
- {
- buff.append(array[i]);
- if(i<array.length-1)
- buff.append(spe);
- }
- return buff.toString();
- }
- /**
- * 顺序排序
- * @param field
- */
- public void setOrderByClauseAsc(String field) {
- this.orderByClause = getFieldName(field) + " ASC";
- }
- /**
- * 倒序排序
- * @param field
- */
- public void setOrderByClauseDesc(String field) {
- this.orderByClause = getFieldName(field) + " DESC";
- }
- public String getOrderByClause() {
- return orderByClause;
- }
- public List<Criteria> getOredCriteria() {
- return oredCriteria;
- }
- /**
- * or 条件
- */
- public void or(Criteria criteria) {
- oredCriteria.add(criteria);
- }
- /**
- * 创建条件对象
- */
- public Criteria createCriteria() {
- Criteria criteria = createCriteriaInternal();
- if (oredCriteria.size() == 0) {
- oredCriteria.add(criteria);
- }
- return criteria;
- }
- protected Criteria createCriteriaInternal() {
- Criteria criteria = new Criteria();
- return criteria;
- }
- /**
- * 清除条件
- */
- public void clear() {
- oredCriteria.clear();
- }
- static String getFieldName(String field)
- {
- if (field == null ) {
- throw new RuntimeException( field + " cannot be null");
- }
- return field.toUpperCase();
- //
- //
- // Pattern pattern = Pattern.compile("[A-Z]{1}");
- // Matcher m = pattern.matcher(field);
- // StringBuffer sbr = new StringBuffer();
- // while(m.find())
- // m.appendReplacement(sbr, "_"+m.group());
- // m.appendTail(sbr);
- // return sbr.toString().toUpperCase();
- }
- /**
- * 查询条件
- */
- public static class Criteria {
- protected List<String> criteriaWithoutValue;
- protected List<Map<String, Object>> criteriaWithSingleValue;
- protected List<Map<String, Object>> criteriaWithListValue;
- protected List<Map<String, Object>> criteriaWithBetweenValue;
- protected Criteria() {
- super();
- criteriaWithoutValue = new ArrayList<String>();
- criteriaWithSingleValue = new ArrayList<Map<String, Object>>();
- criteriaWithListValue = new ArrayList<Map<String, Object>>();
- criteriaWithBetweenValue = new ArrayList<Map<String, Object>>();
- }
- public boolean isValid() {
- return criteriaWithoutValue.size() > 0
- || criteriaWithSingleValue.size() > 0
- || criteriaWithListValue.size() > 0
- || criteriaWithBetweenValue.size() > 0;
- }
- public List<String> getCriteriaWithoutValue() {
- return criteriaWithoutValue;
- }
- public List<Map<String, Object>> getCriteriaWithSingleValue() {
- return criteriaWithSingleValue;
- }
- public List<Map<String, Object>> getCriteriaWithListValue() {
- return criteriaWithListValue;
- }
- public List<Map<String, Object>> getCriteriaWithBetweenValue() {
- return criteriaWithBetweenValue;
- }
- protected void addCriterion(String condition) {
- if (condition == null||"".equals(condition)) {
- return;
- }
- criteriaWithoutValue.add(condition);
- }
- protected void addCriterion(String condition, Object value, String property) {
- if (value == null||"".equals(value)) {
- return;
- }
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("condition", condition);
- map.put("value", value);
- criteriaWithSingleValue.add(map);
- }
- protected void addCriterion(String condition, List<? extends Object> values, String property) {
- if (values == null || values.size() == 0) {
- return;
- }
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("condition", condition);
- map.put("values", values);
- criteriaWithListValue.add(map);
- }
- protected void addCriterion(String condition, Object value1, Object value2, String property) {
- if (value1 == null || value2 == null) {
- return;
- }
- List<Object> list = new ArrayList<Object>();
- list.add(value1);
- list.add(value2);
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("condition", condition);
- map.put("values", list);
- criteriaWithBetweenValue.add(map);
- }
- public Criteria andIsNull(String field) {
- addCriterion(getFieldName(field)+" is null");
- return this;
- }
- public Criteria andIsNotNull(String field) {
- addCriterion(getFieldName(field)+" is not null");
- return this;
- }
- public Criteria andEqualTo(String field,String value) {
- addCriterion(getFieldName(field)+" =", quoteStr(value), field);
- return this;
- }
- public Criteria andNotEqualTo(String field,String value) {
- addCriterion(getFieldName(field)+" <>", quoteStr(value), field);
- return this;
- }
- public Criteria andGreaterThan(String field,String value) {
- addCriterion(getFieldName(field)+" >", quoteStr(value), field);
- return this;
- }
- public Criteria andGreaterThanOrEqualTo(String field,String value) {
- addCriterion(getFieldName(field)+" >=", quoteStr(value), field);
- return this;
- }
- public Criteria andLessThan(String field,String value) {
- addCriterion(getFieldName(field)+" <", quoteStr(value), field);
- return this;
- }
- public Criteria andLessThanOrEqualTo(String field,String value) {
- addCriterion(getFieldName(field)+" <=", quoteStr(value), field);
- return this;
- }
- public Criteria andLike(String field,String value) {
- addCriterion(getFieldName(field)+" like", quoteStr(value), field);
- return this;
- }
- public Criteria andNotLike(String field,String value) {
- addCriterion(getFieldName(field)+" not like", quoteStr(value), field);
- return this;
- }
- @SuppressWarnings("unchecked")
- public Criteria andIn(String field,List<String> values) {
- List vs = new ArrayList();
- for (String string : values)
- {
- vs.add(quoteStr(string));
- }
- addCriterion(getFieldName(field)+" in", vs, field);
- return this;
- }
- @SuppressWarnings("unchecked")
- public Criteria andNotIn(String field,List<String> values) {
- List vs = new ArrayList();
- for (String string : values)
- {
- vs.add(quoteStr(string));
- }
- addCriterion(getFieldName(field)+" not in", vs, field);
- return this;
- }
- public Criteria andBetween(String field,String value1, String value2) {
- addCriterion(getFieldName(field)+" between", quoteStr(value1), quoteStr(value2), field);
- return this;
- }
- public Criteria andNotBetween(String field,String value1, String value2) {
- addCriterion(getFieldName(field)+" not between", quoteStr(value1), quoteStr(value2), field);
- return this;
- }
- private String quoteStr(String str)
- {
- if(str==null)
- return null;
- return "'"+str+"'";
- }
- }
- @SuppressWarnings("unchecked")
- public static void main(String[] args)
- {
- List days = new LinkedList();
- days.add("2008-01-01");
- days.add("2008-01-02");
- BaseSelector cri = new BaseSelector();
- cri.setCommand("select * from table where 1=1");
- cri.createCriteria().andEqualTo("org_code", "vvv")
- .andIn("day_code", days);
- cri.or( cri.createCriteria().andEqualTo("status", "1"));
- System.out.println(cri.toSql());
- }
相关推荐
一个做得还算不错的android sqlite数据库封装工具。想要打败hibernate.....
python操作mysql工具类之压缩包 1、封装一个不用写SQL语句,只需要填参数的工具类 2、封装一个需要自己写SQL语句的mysql工具类
这是自己开发的一个参数校验的工具类,可用于对实例的属性进行非空校验。包括全部校验和任一校验两种校验方式。 举例:CheckParamsUtils.checkParamsAll(requestBean, "name", "age","gender");
就可以使用本工具的执行类EasySqlExecution了,里面包含了常用的增删改查分页,模糊,聚合等等一系列封装,方法只需要传入你的对象进来,会自动识别并关联表,映射表字段,返回结果值,不需要你去写任何sql。...
自己封装的JDBC工具类,能够实现对数据库的增删改查以及批处理,事物处理等操作
最近刚学习了JDBC,最后封装了一段简单的工具类,主要功能有: 1、执行sql语句返回单条查询结果; 2、执行查询语句sql返回结果集; 3、执行数据的插入,修改,删除; 4、执行批处理; 5、调用存储过程; 6、...
C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle) 这个类封装成dll后,相关数据库连接可在,引用该dll项目的app.config文件中写,如果是web程序,这需要修改代码,将构造函数中获取app.config的信息换成获取...
该类封装了sqlite3常用操作(可执行 增删改查,事务,创建/增加sql函数,数据库文件压缩等) 该类的使用方法见sqldb.h,该头文件有具体的使用示例。 其中 libPublic.h没上传,里面只用到数据类型的定义(如BOOL,类...
2、SQLUtil(SQL语句工具类) 对基本SQL语句进行了进一步封装,将建表,多种查询,插入行等mySql操作语句转变成方法,方便使用者使用,减轻使用者自己构造SQL语句的麻烦,并能有效的减小用户进行JDBC操作时的出错率...
封装了常用的SQL Server数据操作方法,基本的增删改查、存储过程的调用,只需要简单的填写参数即可。
本工具小巧、绿色占用500K空间,通过 C++开发操作SQL SERVER 数据库工具,可任意操作数据库,包括SQL 语句的查询、删除、更新等一系列操作。
避免重复造轮子,开发中常用封装的工具类,包括:类型转换器,时间格式转换器,文件传输,非Controller中获取当前session的工具类,唯一id生成器,MD5加密类(封装jdk自带的md5加密方法),数字格式化的类,得到中文...
JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC...
封装了工具类,包含筛选代码列表,去重,合并代码,两个文件读取比较,统计sql个数
C# 数据库操作类,可以简化你的数据库操作, 不需要再花大量时间在数据库SQL上, 还附带一些常见的功能封装.如列出局域网中所有SQLServer服务器
封装分页工具类的使用: 本实例在tp框架环境下 $goods = M("goods"); //tp实例化goods模型 $total = $goods->count(); //计算数据条数 $per = 7; //每页展示分页条数 $page = new Page($total,$per); //new分页...
java基础工具类iceroot iceroot是一个java基础工具类.封装了很多有用的方法. 该类库无任何第三方依赖. 涵盖了 字符串操作 时间转化 读取配置文件 等方面. 基础工具类对于java代码的编写是非常必要的,然 而很多...
介绍node-sqlite3 API,并对API初步封装,方便开发人员调用,实现业务逻辑。
本文介绍了以SQLServer为例编写一个简单的数据库连接工具类,把它封装到web项目的(WEB-INF/classes/)目录下,在Java或JSP页面引入就可以实现了。
插件中封装了一系列数据库操作的类,根据实体模型自动化生成插入、更新、删除、查询语句,Dao层通用函数封装,使用此插件基本上只用写少量的数据库层代码即可完成对数据库的操作。