//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 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> listMap) {/n/t/tParams params = new Params();/n/t/tparams.setTables(getTableName(entityName));/n/t/tparams.setInsertMap(listMap.get(0));/n/t/tparams.setBacthInsertMap(listMap);/n/t/treturn databaseService.batchAdd(params);/n/t}/n/t/n/t/**/n/t * 通过条件修改实体/n/t * /n/t * @param entityName 实体Class/n/t * @param updataData 修改数据/n/t * @param whereSql 条件语句/n/t * @return 成功或失败/n/t *//n/tpublic boolean updateByWhere(Class entityName, Map updateData, String whereSql){/n/t/tboolean bool = false;/n/t/ttry {/n/t/t/tStringBuffer sb = new StringBuffer(/'update /');/n/t/t/tsb.append(getTableName(entityName)).append(/' set /');/n/t/t/tIterator it = updateData.keySet().iterator();/n/t/t/tStringBuffer updateBuffer = new StringBuffer();/n/t/t/t/n/t/t/twhile (it.hasNext()) {/n/t/t/t/tString key = it.next();/n/t/t/t/tif(updateData.get(key) == null) {/n/t/t/t/t/tupdateBuffer.append(key).append('=').append(/'null/').append(',');/n/t/t/t/t} else{/n/t/t/t/t/tupdateBuffer.append(key).append('=').append(':'+key).append(',');/n/t/t/t/t}/n/t/t/t}/n/t/t/t/n/t/t/tsb.append(updateBuffer.substring(0, updateBuffer.length() - 1)).append(whereSql);/n/t/t/tbool = databaseService.executeAction(sqlAppend(sb.toString(), updateData)) > 0;/n/t/t} catch (Exception e) {/n/t/t/te.printStackTrace();/n/t/t}/n/t/treturn bool;/n/t}/n/t/n/tpublic long deleteById(Class entityName, Object id) {/n/t/tString sql = /'delete from /' + getTableName(entityName) + /' where id = /' + id;/n/t/treturn databaseService.executeAction(sql);/n/t}/n/t/n/t/**/n/t * 获取实体字段列表/n/t * /n/t * @param clazz 实体Class/n/t * @return/n/t *//n/tpublic static String getClassColumns(Class clazz) {/n/t/tString columns = /'/';/n/t/t// 定义实体信息对象/n/t/tBeanInfo beanInfo;/n/t/ttry {/n/t/t/t// 获取实体详细信息/n/t/t/tbeanInfo = Introspector.getBeanInfo(clazz);/n/t/t/n/t/t/t// 获取实体属性描述集合/n/t/t/tPropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();/n/t/t/tfor (int i = 0; i < propertyDescriptors.length; i++) {/n/t/t/t/t// 获取属性描述/n/t/t/t/tPropertyDescriptor descriptor = propertyDescriptors[i];/n/t/t/t/n/t/t/t/t// 获取属性名/n/t/t/t/tString propertyName = descriptor.getName();/n/t/t/t/tif (!propertyName.equals(/'class/')) {/n/t/t/t/t/tcolumns += propertyName + /',/';/n/t/t/t/t}/n/t/t/t}/n/t/t} catch (IntrospectionException e) {/n/t/t/te.printStackTrace();/n/t/t} catch (IllegalArgumentException e) {/n/t/t/te.printStackTrace();/n/t/t}/n/t/treturn columns.substring(0, columns.length() - 1);/n/t}/n/t/n/t//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> getListByBean(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.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 * @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> getListByBean(Class clazz, String whereSql, int page, int rows, String sortColumn, String sort) {/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(/' ORDER BY /').append(sortColumn).append(' ').append(sort);/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 page 开始页/n/t * @param rows 查询的条数/n/t * @return/n/t *//n/tpublic List<Map<String, Object>> getListByBean(Class clazz, 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(/' 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> getListByBean(Class clazz, int page, int rows, String sortColumn, String sort) {/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(/' ORDER BY /').append(sortColumn).append(' ').append(sort);/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 sqlStr 自己写的SQL语句/n/t * @param whereSql 查询条件/n/t * @param page 开始页/n/t * @param rows 查询的条数/n/t * @return/n/t *//n/tpublic List<Map<String, Object>> getListByBean(String sqlStr, String whereSql, int page, int rows) {/n/t/tStringBuffer sql = new StringBuffer();/n/t/t//查询部分/n/t/tsql.append(sqlStr);/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 sqlStr 自己写的SQL语句/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<Map<String, Object>> getListByBean(String sqlStr, String whereSql, int page, int rows, String sortColumn, String sort) {/n/t/tStringBuffer sql = new StringBuffer();/n/t/t//查询部分/n/t/tsql.append(sqlStr);/n/t/t//条件/n/t/tsql.append(' ').append(whereSql);/n/t/t//排序/n/t/tsql.append(/' ORDER BY /').append(sortColumn).append(' ').append(sort);/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 sqlStr 自己写的SQL语句/n/t * @param whereSql 查询条件/n/t * @param page 开始页/n/t * @param rows 查询的条数/n/t * @return/n/t *//n/tpublic List<Map<String, Object>> getListByBean(String sqlStr, int page, int rows) {/n/t/tStringBuffer sql = new StringBuffer();/n/t/t//查询部分/n/t/tsql.append(sqlStr);/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 * 批量删除/n/t * /n/t * @param clazz 实体Class/n/t * @param deleteList 删除的集合/n/t * @param deleteColumnName 批量删除条件字段/n/t * @return/n/t *//n/tpublic int batchDelete(Class clazz, List deleteList, String deleteColumnName) {/n/t/tParams params = new Params();/n/t/tparams.setDeleteCoulumnName(deleteColumnName);/n/t/tparams.setDeleteList(deleteList);/n/t/tparams.setTables(getTableName(clazz));/n/t/t/n/t/treturn databaseService.batchDelete(params);/n/t}/n}/n

通用数据库操作类 - DatabaseServiceImp

原文地址: https://www.cveoy.top/t/topic/jn0l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录