当前位置: 首页 > news >正文

优化seo网站西安做电商网站的上海公司

优化seo网站西安,做电商网站的上海公司,柳州市建设工程技术服务中心,狗狗和人做网站本专栏用于解析自己开源的项目代码#xff0c;作为复盘和学习使用。欢迎大家一起交流 本样例说明源码开源在#xff1a; ruoyi-reoprt gitee仓库 ruoyi-report github仓库 欢迎大家到到项目中多给点star支持#xff0c;对项目有建议或者有想要了解的欢迎一起讨论 连接数据库…本专栏用于解析自己开源的项目代码作为复盘和学习使用。欢迎大家一起交流 本样例说明源码开源在 ruoyi-reoprt gitee仓库 ruoyi-report github仓库 欢迎大家到到项目中多给点star支持对项目有建议或者有想要了解的欢迎一起讨论 连接数据库这一模块整体参考的是AJ-report的模块去掉了目前不支持的数据库格式仅保留了mysql和sqlserver https://gitee.com/anji-plus/report 1. 存储数据库连接 1.1 数据库连接表单设计 create table cwu_data_source (source_code varchar(100) null comment 数据源编码,source_name varchar(100) null comment 数据源名称,source_desc varchar(255) null comment 数据源描述,source_type varchar(50) null comment 数据源类型 DIC_NAMESOURCE_TYPE; mysqloracesqlserverelasticsearch接口javaBean数据源类型字典中item-extend动态生成表单,source_config varchar(2048) null comment 数据源连接配置json关系库{ jdbcUrl:, username:, password: } ES{ hostList:ip1:9300,ip2:9300,ip3:9300, clusterName:elasticsearch_cluster } 接口{ apiUrl:http://ip:port/url, method: } javaBean{ beanNamw:xxx },enable_flag int default 1 null comment 0--已禁用 1--已启用 DIC_NAMEENABLE_FLAG,id int auto_incrementprimary key,create_time bigint null comment 创建时间,update_time bigint null comment 更新时间,update_user bigint null comment 更新者id,create_user bigint null comment 创建者id,create_org bigint null comment 创建的组织id,update_org bigint null comment 更新的组织id,is_delete int default 0 null comment 1删除0有效,version int null,constraint unique_source_codeunique (source_code) )comment 数据源管理 charset utf8row_format DYNAMIC;1.2 测试连接配置是否能连接成功 在写入存储阶段先进行一次测试连接给用户及时反馈配置是否正确。 使用Hikari进行数据库连接获取到一个连接判断是否能正常获取到 // 传入连接所需的参数 public class DataSourceDto extends BaseClass implements Serializable {/** 数据源编码 */private String sourceCode;/** 数据源名称 */private String sourceName;/** 数据源描述 */private String sourceDesc;/** 数据源类型 DIC_NAMESOURCE_TYPE; mysqloracesqlserverelasticsearch接口javaBean数据源类型字典中item-extend动态生成表单 */private String sourceType;/** 数据源连接配置json关系库{ jdbcUrl:, username:, password:,driverName:}ES-sql{ apiUrl:http://127.0.0.1:9092/_xpack/sql?formatjson,method:POST,body:{query:select 1} } 接口{ apiUrl:http://ip:port/url, method: } javaBean{ beanNamw:xxx } */private String sourceConfig;/** 0--已禁用 1--已启用 DIC_NAMEENABLE_FLAG */private Integer enableFlag;/** 0--未删除 1--已删除 DIC_NAMEDELETE_FLAG */private Integer deleteFlag;/**************************************************************//**关系型数据库jdbcUrl */private String jdbcUrl;/** 关系型数据库用户名 */private String username;/** 关系型数据库密码 */private String password;/** 关系型数据库驱动类 */private String driverName;/** 关系型数据库sql */private String sql;/** http requestUrl */private String apiUrl;/** http method */private String method;/** http header */private String header;/** http 请求体 */private String body;/** 动态查询sql或者接口中的请求体 */private String dynSentence;/** 传入的自定义参数解决url中存在的动态参数*/private MapString, Object contextData;}public HikariPool getJdbcConnectionPool(DataSourceDto dataSource) {if (map.containsKey(dataSource.getId())) {return map.get(dataSource.getId());} else {try {synchronized (lock) {if (!map.containsKey(dataSource.getId())) {HikariPool pool hikariPoolProperties.dataSource(dataSource.getJdbcUrl(),dataSource.getUsername(), dataSource.getPassword(), dataSource.getDriverName());map.put(dataSource.getId(), pool);log.info(创建连接池成功{}, dataSource.getJdbcUrl());}}return map.get(dataSource.getId());} finally {}}}2. 执行查询语句 目前能执行的数据库都是关系型数据库所以直接执行到对应的方法中先从连接池中根据数据库id取出对应的连接如果没有的话新建一个。然后执行对应的sql语句. 查询结果用 ListMapString,Object的结构返回list中的一个元素表示一行的值map中的keyvalue为数据库中对应的字段和值 public ListMapString,Object executeRelationalDb(DataSourceDto dto) {analysisRelationalDbConfig(dto);Connection pooledConnection null;try {pooledConnection jdbcService.getPooledConnection(dto);PreparedStatement statement pooledConnection.prepareStatement(dto.getDynSentence());ResultSet rs statement.executeQuery();int columnCount rs.getMetaData().getColumnCount();ListString columns new ArrayList();for (int i 1; i columnCount; i) {String columnName rs.getMetaData().getColumnLabel(i);columns.add(columnName);}ListMapString,Object list new ArrayList();while (rs.next()) {MapString,Object jo new HashMap();columns.forEach(t - {try {Object value rs.getObject(t);//数据类型转换Object result dealResult(value);jo.put(t, result);} catch (SQLException throwable) {log.error(error,throwable);throw new GlobalException(ResponseCode.EXECUTE_SQL_ERROR, throwable.getMessage());}});list.add(jo);}return list;} catch (Exception throwable) {log.error(error,throwable);throw new GlobalException(ResponseCode.EXECUTE_SQL_ERROR, throwable.getMessage());} finally {try {if (pooledConnection ! null) {pooledConnection.close();}} catch (SQLException throwable) {log.error(error,throwable);throw new GlobalException(ResponseCode.DATA_SOURCE_CONNECTION_FAILED, throwable.getMessage());}}}3. 获取数据库中的表和字段结构 对于mysql和sqlserver来说传入表名字获取表中的字段结构的sql语句存在不同所以需要分别处理执行拿到的数据结构统一格式返回 // 传入表名和数据库id返回对应的表字段数据包括字段名、类型、备注 public ListMap getTableFile(String tableName,Integer dataSourceId) {DataSource dataSource dataSourceService.getById(dataSourceId);ListMapString,Object list dataSourceService.execute(getSqlByType(dataSource.getSourceType(),tableName),dataSourceId);ListMap mapList new ArrayList();for (MapString,Object map : list) {MapString,Object map1 new HashMap();map1.put(field,map.get(Field));map1.put(type,map.get(Type));if(map.get(Comment) ! null !map.get(Comment).equals()){map1.put(comment,map.get(Comment));}else {map1.put(comment,map.get(Field));}mapList.add(map1);}return mapList;} // 根据不同的类型返回不同的sql执行语句 private String getSqlByType(String type,String tableName){switch (type) {case JdbcConstants.MYSQL:return show full fields from tableName; case JdbcConstants.SQL_SERVER:return SELECT \n c.name AS Field,\n ty.name AS Type,\n c.is_nullable,\n ep.value AS Comment\n FROM \n sys.columns c\n INNER JOIN sys.types ty ON c.user_type_id ty.user_type_id\n INNER JOIN sys.tables t ON c.object_id t.object_id\n LEFT JOIN sys.extended_properties ep ON c.object_id ep.major_id \n AND c.column_id ep.minor_id \n AND ep.name MS_Description\n AND ep.class 1\n WHERE \n t.name tableName \n AND ty.is_user_defined 0; ;default:throw new RuntimeException(不支持该类型);}}4. 对应系统功能展示
http://www.hkea.cn/news/14276233/

相关文章:

  • 泉山微网站开发南京林业大学实验与建设网站
  • 怎么创建万维网网站python做网站后台
  • 现在什么网站比较火做推广湛江模板建站公司
  • 微信小程序怎么做购物网站点菜网站模板
  • 松阳县建设局网站查企业营业执照的网站
  • 青岛网站建设制作小程序app备案
  • 怎样做淘宝推广网站荆门市住房和城乡建设局网站
  • 3分钟搞定网站seo优化外链建设网络营销个人网站
  • ps做网站logo尺寸一般网站字体
  • 做外贸找客户最好用的网站湘潭网站建设方案费用
  • 鸟人 网站建设wordpress加入购买功能
  • 旅游网站经营模式徐州模板自助建站
  • 茂名网站制作网站 不稳定
  • 国外网站无法访问做网站要用到哪些技术
  • 网站开发软件 连接SQL数据库重庆网站建设jccit
  • 网站icon怎么设置网站开发搭建合同
  • 表格上传网站东莞市义务教育阶段统一招生平台
  • 建设淘宝网站的意义建设工程合同分类有哪些
  • 临沂市建设局网站简介哪些网站做推广
  • 网站广告案例html怎么做网站首页
  • 个人或主题网站建设档案网站建设文献综述
  • wordpress栏目图片优化系统的软件
  • 网站建设招标信息秦皇岛昌黎县建设局网站
  • 网站建设毕业设计总结建设银行企业网站打不开
  • 找程序员做网站自己做竞猜网站挣钱吗
  • 揭阳住房和城乡建设厅网站外发加工网1688
  • 怎样做网站店铺什么是网站内链
  • 网站开发文档总结网络设计包括哪些方面
  • 网站建设 成本哈尔滨建站模板系统
  • 公众号网站开发用什么模板明星网页设计模板