package com.ycsoft.daos.core.generator; import java.io.Serializable; import java.util.List; import java.util.Map; import com.ycsoft.daos.config.Table; /** * <p>SQL生成器接口,提供了所有对数据库基本操作的sql</P> */ public interface SQLGenerator { /** * <p> 通过实体对象生成相应的SQL语句</p> * @param maps 字段及值 * @param tableName 表名称 */ String getSave(String tableName,Map<String , Object > maps); /** * <p> 删除的sql,将根据在JavaBean配置的主键字段作为删除的条件</p> */ String getDelete(Table tb); /** * <p> 更新的sql,将根据在JavaBean配置的主键字段作为删除的条件 </p> * @param tb 表信息对象 * @param columns 需要更新的列 */ String getUpdate(Table tb , List<String> columns) ; /** * 获取更新SQL命令,包含参数的值, * @param tb 表信息 * @param maps 转载字段及对应的Value的集合 * @param key 主键字段 */ public String getUpdate(Table tb,Map<String, Object> maps, Object key); /** * <p> 生成产生所有数据的SQL </P> * @param tname 表名 */ String getEntityAll(String tname) ; /** * <p> 查询通过主键 </p> * @param tb 存储了表相关的信息对象 * @return */ String getEntityByKey(Table tb) ; /** * <p> 获得总记录数的sql </p> * @param tname 表名 */ String getRows(String tname ); /** * <p> 获取序列的下一个值 </p> * @param sequenceName 序列名 * @return */ String getSeqNextVal(String sequenceName); /** * <p> 获取表名的Sql </p> * @param tname 表名 */ String getTableColums(String tname); /** * <p> 将指定的sql转换成分页查询命令 </p> * @param sql 原命令 * @return 添加了分页命令的sql */ String getPage(String sql,int start,int limit); /** * <p> 将给定的sql命令,获得结果集行数的命令. </p> * @param sql 原命令 * @return */ String getPageCount(String sql); /** * <p> 通过给定的Map,将Map作为查询条件,封装SQL </p> * @param tableName 表名称 * @param params 对应的查询条件 * @return */ String getFindByMap(String tableName , Map<String, Serializable> params); /** * 将<code>appendCondition</code>对象中不为NULL的属性,生成条件语句串 * @param appendCondition * @return */ String and(Map params) ; /** * 通过给定的Map,将Map中的参数值以"or"的形式作为查询条件封装SQL, * 忽略NULL元素值 * @return */ String or(Map<String , Object> params); /** * 通过给定的List 返回一个符合SQL中in关键字的参数值 * @param value * @return */ String in(Object[] value); String setWhereInArray(String name,Object[] value); }