- 浏览: 237986 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
月度银墙:
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 sql封装工具类"是为了简化Android应用中对SQLite数据库的操作而设计的。通常,开发者需要编写大量的SQL语句和相关的CRUD(Create, Read, Update, Delete)操作,这不仅繁琐且容易出错。通过封装,...
java连接SqlServer完整代码,工具类,jdbc JDBC工具类的构建 1.资源释放 见https://mp.csdn.net/postedit/86577443 2.驱动防二次注册 ``` Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //...
在Android开发中,工具类(Utils Class)是程序员经常创建的一种辅助代码结构,用来封装一些通用功能,提高代码的复用性和可维护性。这里提到的"Android 封装的工具类"涵盖了几种关键的模块,包括网络请求、数据库...
这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及异常处理的负担。下面我们将深入探讨SpringJdbcTemplate的相关知识点。 1. **SpringJdbcTemplate...
总之,`C# SQL封装类类`如`SqlHelper`是软件开发中的重要工具,它简化了数据库操作,提高了代码质量,并提供了安全的SQL执行机制。通过理解和熟练使用这样的类,开发者能够更高效、安全地进行数据库编程。
总的来说,"用C#实现的SqlServer封装类"是一个实用的工具,它简化了数据库操作,使开发者能更专注于核心业务逻辑,而不是数据库访问的细节。这种封装方式在实际项目中广泛应用,对于提升代码质量和开发效率具有积极...
综上所述,这个压缩包提供的"C# WPF sqlserver 数据库 封装类"是一个实用的工具,它简化了C# WPF应用与SQL Server数据库之间的交互,通过提供易于使用的API降低了开发难度。同时,附带的测试数据库有助于开发者验证...
总的来说,这个"C# SQL封装类"是为.NET 2.0环境优化的一个实用工具,旨在简化SQL Server的数据库操作,提高开发效率,并确保在较旧的.NET框架版本中也能正常运行。对于那些需要维护.NET 2.0项目或者希望避免直接与...
"ios-SQLite封装工具类.zip"是一个压缩包,包含了针对SQLite数据库进行操作的自定义工具类,可以帮助开发者更方便地进行数据存取。在这个压缩包中,"02 封装工具类"很可能是实现这些功能的源代码文件。以下是关于iOS...
- **Python中的SQLAlchemy**:一个强大的SQL工具包,支持SQL语句的动态执行和编译,并允许用户定义SQL表达式为Python类的方法。 ```python from sqlalchemy import create_engine, MetaData, Table, select engine ...
以下将详细讲解标题和描述中提到的几个关键工具类及其封装方法: 1. **DateUtil**: Java中的日期时间处理在早期版本中较为复杂,`DateUtil` 类通常是为了封装`java.util.Date`、`Calendar` 和 `java.time` 包中的类...
### 封装的SQL数据库访问类 在现代软件开发中,特别是Web应用开发领域,对数据库的操作是非常核心的一部分。为了简化这些操作并提高代码的可维护性和可读性,开发者通常会采用各种技术来实现数据库访问层(Data ...
总的来说,"数据库 sql与MFC的连接封装 类 ADO"项目为开发者提供了一个强大的工具,它结合了MFC的便利性和ADO的数据库访问能力,使得在C++环境中操作SQL数据库变得更加简单和高效。通过深入理解和使用这个封装类,...
在本主题中,我们将深入探讨如何使用Java JDBC来封装对SQL Server数据库的连接,从而创建一个实用工具类(Util类),提高代码的复用性和可维护性。 首先,确保你的项目已经引入了适用于SQL Server的JDBC驱动,如...
本压缩包提供的是一系列常用且实用的jar文件,涵盖了SpringMVC、MyBatis框架的核心组件,以及一些辅助开发的工具类和解析功能。以下是这些jar文件包含的主要知识点: 1. **SpringMVC**: SpringMVC是Spring框架的一...
在Java的持久化框架中,Hibernate是一个非常重要的工具,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地在Java对象和数据库表之间进行数据操作。当我们需要执行一些特殊的、复杂的或者非标准的SQL...
总的来说,"ORMLite框架二次封装工具类"是一个高效的解决方案,它降低了Android应用中数据库操作的复杂度,提高了代码的可读性和可维护性。通过学习和使用这样的工具类,开发者可以更加专注于业务逻辑,而不是基础的...
例如,你可以有一个`execute_query`方法用于执行查询操作,只需要传入表名、字段名和过滤条件等参数,工具类内部会自动构造并执行相应的SQL语句。这样做的好处在于提高了代码的可读性和可维护性,同时减少了重复代码...
C++ ADO(ActiveX Data Objects)封装类是一种高效、轻量级的工具,它允许开发者通过C++语言便捷地访问和操作数据库。ADO是Microsoft提供的数据访问接口,它允许应用程序与各种数据库进行交互,包括SQL Server、...
CIUD(Create, Update, Delete)封装工具类是软件开发中的一个常见设计模式,主要用于数据库操作,特别是关系型数据库管理系统的CRUD操作。这个类通常包含了一系列方法,用于创建(Create)、更新(Update)、删除...