//n * 通用数据库操作类/n *//npublic class DatabaseServiceImp {/n/n/t@Autowired/n/tprivate DatabaseService databaseService;/n/n/t//n/t * 增删改SQL操作/n/t * /n/t * @param sql 操作的sql语句/n/t * @return/n/t *//n/tpublic long executeAction(String sql) {/n/t/treturn databaseService.executeAction(sql);/n/t}/n/n/t//n/t * 查询单条语句/n/t * /n/t * @param sql 操作的sql语句/n/t * @return/n/t *//n/tpublic Map<String, Object> findFirst(String sql) {/n/t/treturn databaseService.findFirst(sql);/n/t}/n/n/t//n/t * 查询多条语句/n/t * /n/t * @param sql 操作的sql语句/n/t * @return/n/t *//n/tpublic List<Map<String, Object>> find(String sql) {/n/t/treturn databaseService.find(sql);/n/t}/n/n/t//n/t * 查找数量/n/t * /n/t * @param sql 查询的sql 语句/n/t * @return/n/t *//n/tpublic long findCount(String sql) {/n/t/treturn databaseService.findCount(sql);/n/t}/n/t/n/t//n/t * 查询单个/n/t * /n/t * @param sql 查询的sql 语句/n/t * @return/n/t *//n/tpublic Object findOneValue(String sql) {/n/t/treturn databaseService.findOneValue(sql);/n/t}/n/t/n/t//n/t * 拼接SQL实现预处理语句/n/t * /n/t * @param sql 预处理的语句/n/t * @param param 拼接的参数/n/t * @return/n/t *//n/tprotected String sqlAppend(String sql, Map<String, Object> searchParams) {/n/t/tfor (String key : searchParams.keySet()) {/n/t/t/tsql = sql.replaceAll(':' + key, '/'' + searchParams.get(key).toString().replaceAll(/''/', /'/') + '/'');/n/t/t}/n/t/treturn sql;/n/t}/n/t/n/t//n/t * 验证字符串防止sql注入/n/t * /n/t * @param value 要过滤的值/n/t * @return/n/t *//n/tprotected String validateValue(String value) {/n/t/treturn '/'' + value.replaceAll(/''/', /'/') + '/'';/n/t}/n/t/n/t//n/t * 去掉所有单引号/n/t * /n/t * @param value 传入的字符串/n/t * @return/n/t *//n/tprotected String deleteSpoit(String value) {/n/t/treturn value.replaceAll(/''/', /'/');/n/t}/n/t/n/t//n/t * 直接拼接参数/n/t * /n/t * @param searchParams 查询参数/n/t * @return/n/t *//n/tprotected StringBuffer appendWhereSql(Map<String, Object> searchParams) {/n/t/tStringBuffer sqlBuffer = new StringBuffer(/'/');/n/t/tif(searchParams != null && searchParams.size() > 0) {/n/t/t/tsqlBuffer.append(/' where /');/n/t/t/tfor (String key : searchParams.keySet()) {/n/t/t/t/tsqlBuffer.append(key).append(/' = /').append('/'').append(searchParams.get(key).toString().replaceAll(/''/', /'/')).append(/''/ or /');/n/t/t/t}/n/t/t/tint length = sqlBuffer.length();/n/t/t/treturn sqlBuffer.delete(length - 3, length);/n/t/t} else {/n/t/t/treturn sqlBuffer;/n/t/t}/n/t}/n/t/n/t//n/t * 得到实体名/n/t * /n/t * @param entityName 实体Class/n/t * @return 实体名/n/t *//n/tprivate String getTableName(Class extends Object> entityName) {/n/t/treturn entityName.getSimpleName().toUpperCase();/n/t}/n/t/n/t/**/n/t * 添加实体/n/t * /n/t * @param entityName 实体Class/n/t * @param addData 添加的数据/n/t * @return 主键ID/n/t *//n/tpublic long addClass(Class entityName, Map addData) {/n/t/tParams params = new Params();/n/t/tparams.setTables(getTableName(entityName));/n/t/tparams.setInsertMap(addData);/n/t/tdatabaseService.addEntity(params);/n/t/treturn params.getId();/n/t}/n/t/n/t/**/n/t * 批量添加数据/n/t * /n/t * @param entityName 实体Class/n/t * @param listMap/t批量数据集合/n/t * @return/n/t *//n/tpublic int batchAdd(Class entityName, List/n/t * 通过实体class获取实体列表数据(无条件)/n/t * /n/t * @param clazz 实体Class/n/t * @return/n/t *//n/tpublic List<Map<String, Object>> getListByBean(Class> clazz) {/n/t/tStringBuffer sql = new StringBuffer();/n/t/t//查询部分/n/t/tsql.append(/'SELECT /').append(getClassColumns(clazz)).append(/' FROM /').append(getTableName(clazz));/n/t/t/n/t/treturn databaseService.find(sql.toString());/n/t}/n/t/n/t/**/n/t * 通过实体class获取实体数据(无条件)/n/t * /n/t * @param clazz 实体Class/n/t * @return/n/t *//n/tpublic Map getByBean(Class> clazz) {/n/t/tStringBuffer sql = new StringBuffer();/n/t/t//查询部分/n/t/tsql.append(/'SELECT /').append(getClassColumns(clazz)).append(/' FROM /').append(getTableName(clazz));/n/t/t/n/t/treturn databaseService.findFirst(sql.toString());/n/t}/n/t/n/t//n/t * 通过实体class获取实体数据/n/t * /n/t * @param clazz 实体Class/n/t * @param whereSql 查询条件/n/t * @return/n/t *//n/tpublic Map<String, Object> getBean(Class> clazz, String whereSql) {/n/t/tStringBuffer sql = new StringBuffer();/n/t/t//查询部分/n/t/tsql.append(/'SELECT /').append(getClassColumns(clazz)).append(/' FROM /').append(getTableName(clazz));/n/t/t//条件/n/t/tsql.append(' ').append(whereSql);/n/t/t/n/t/treturn databaseService.findFirst(sql.toString());/n/t}/n/t/n/t/**/n/t * 通过实体class获取实体列表数据/n/t * /n/t * @param clazz 实体Class/n/t * @param whereSql 查询条件/n/t * @return/n/t *//n/tpublic List/n/t * 通过实体class获取实体列表数据/n/t * /n/t * @param clazz 实体Class/n/t * @param whereSql 查询条件/n/t * @param page 开始页/n/t * @param rows 查询的条数/n/t * @return/n/t *//n/tpublic List<Map<String, Object>> getListByBean(Class> clazz, String whereSql, int page, int rows) {/n/t/tStringBuffer sql = new StringBuffer();/n/t/t//查询部分/n/t/tsql.append(/'SELECT /').append(getClassColumns(clazz)).append(/' FROM /').append(getTableName(clazz));/n/t/t//条件/n/t/tsql.append(' ').append(whereSql);/n/t/t//分页/n/t/tsql.append(/' limit /').append((page - 1) * rows).append(',').append(rows);/n/t/t/n/t/treturn databaseService.find(sql.toString());/n/t}/n/t/n/t/**/n/t * 通过实体class获取实体列表数据/n/t * /n/t * @param clazz 实体Class/n/t * @param whereSql 查询条件/n/t * @param page 开始页/n/t * @param rows 查询的条数/n/t * @param sortColumn 排序字段/n/t * @param sort 排序方式/n/t * @return/n/t *//n/tpublic List