package com.artfess.base.util; import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.sql.Clob; import java.sql.SQLException; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.artfess.base.datasource.DatabaseContext; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils; /** * SQl的帮助类 * * @company 阿特菲斯信息技术有限公司 * @author heyifan * @email heyf@jee-soft.cn * @date 2020年4月16日 */ public class SQLUtil { /** * 根据数据库连接的URL,取得数据库类型 * @param url * @return */ public static String getDbTypeByUrl(String url) { return JdbcUtils.getDbType(url).getDb(); } /** * 取得当前数据源的数据库类型 * @return */ public static String getDbType() { return getDbTypeObj().getDb(); } public static DbType getDbTypeObj() { DatabaseContext databaseContext = AppUtil.getBean(DatabaseContext.class); return databaseContext.getDbTypeObj(); } /** * 是否含有sql注入 * @param sql sql语句 * @return true:含有,false:含有 */ public static boolean containsSqlInjection(String sql) { if(StringUtil.isEmpty(sql)){ return false; } Pattern pattern = Pattern.compile("\\b(insert|drop|grant|alter|delete|update|truncate)\\b"); Matcher matcher = pattern.matcher(sql.toLowerCase()); return matcher.find(); } /** * 将数据库字段为CLOB的数据转成String * @param clob * @return * @throws SQLException * @throws IOException */ public static String ClobToString(Clob clob) throws SQLException, IOException { String ret = ""; Reader read= clob.getCharacterStream(); BufferedReader br = new BufferedReader(read); String s = br.readLine(); StringBuffer sb = new StringBuffer(); while (s != null) { sb.append(s); s = br.readLine(); } ret = sb.toString(); if(br != null){ br.close(); } if(read != null){ read.close(); } return ret; } }