首页 > 数据库 >Springboot 链接DataSource前检查或创建库,并设置时区及sql_mode

Springboot 链接DataSource前检查或创建库,并设置时区及sql_mode

时间:2023-06-05 10:07:37浏览次数:30  
标签:java Springboot private DataSource statement sql import String

/*
 * Copyright (c) 2022.  Asiacom Technology Inc. All rights reserved
 */


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;
import java.net.URI;
import java.net.URISyntaxException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

@Configuration
public class DataSourceHelper {

  private Logger log = LoggerFactory.getLogger(DataSourceHelper.class);

  @Value("${spring.datasource.driverClassName}")
  private String driver; // com.mysql.cj.jdbc.Driver
  @Value("${spring.datasource.druid.master.url}")
  private String url; // jdbc:mysql://localhost:3306/pybbs?useSSL=false&characterEncoding=utf8
  @Value("${spring.datasource.druid.master.username}")
  private String username; // root
  @Value("${spring.datasource.druid.master.password}")
  private String password; // password

  @PostConstruct
  public void init() {
    try {
      Class.forName(driver);
      URI uri = new URI(url.replace("jdbc:", ""));
      String host = uri.getHost();
      int port = uri.getPort();
      String path = uri.getPath();
      Connection connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai", username, password);
      Statement statement = connection.createStatement();
      statement.executeUpdate("CREATE DATABASE IF NOT EXISTS `" + path.replace("/", "") + "` DEFAULT CHARACTER SET = `utf8mb4` COLLATE `utf8mb4_general_ci`;");
      // 设置时区+8
      statement.executeUpdate("set global time_zone = '+8:00';");
      // 设置sql_mode,解决sql_mode=only_full_group_by异常
      statement.executeUpdate("set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';");
      statement.close();
      connection.close();
    } catch (URISyntaxException | ClassNotFoundException | SQLException e) {
      log.error(e.getMessage());
    }
  }
}


标签:java,Springboot,private,DataSource,statement,sql,import,String
From: https://blog.51cto.com/u_6237110/6413149

相关文章

  • MySQL学习从基础开始
    1.什么是数据库DataBase,简称DB;数据库软件称为数据库管理系统,英文简称DBMS,全称为DataBaseManagementSystem,例如:Oracle、MySQL、SQLServer、Sybase、informix、DB2等等。2.MySQL概述MySQL最初是由“MySQLAB公司”开发的一套关系型数据库管理系统(RDBMS-RelationDataBas......
  • NoSQL数据库的四大分类的分析
    1NoSQL数据库的四大分类2共同特征对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。无共享架构:相对于将所有数据......
  • 基于JAVA操作系统在线网站SQL
    随着21世纪的到来,人们更深刻的感受到了计算机在生活和工作中作用的重要,越来越多的职业需要具有计算机的应用技能。掌握计算机是职业的需要,社会的需要,更是事业发展的需要。今天,计算机技术不但广泛地应用在办公自动化中,还全面参与到各行各业。所有与计算机相关的职业都要求工作者有......
  • SpringBoot打包成WAR包的时候把第三方jar包打到LIB文件夹下和把第三方jar包打入到Spri
    SpringBoot打包成WAR包的时候把第三方jar包打到LIB文件夹下和把第三方jar包打入到SpringBootjar包中转载首先我们应该知道我们把SPRINGBOOT项目打包成WAR包和JAR包的时候分别需要何种插件我们最常用的把springBoot打成jar包的插件是下面这样的一个插件,这是把我们的springBoot......
  • sql中,where和having的区别
    区别1:WHERE可以直接使用表中的字段作为筛选条件,但不能使用分组中的计算函数作为筛选条件;HAVING必须要与GROUPBY配合使用,可以把分组计算的函数和分组字段作为筛选条件。这决定了,在需要对数据进行分组统计的时候,HAVING可以完成WHERE不能完成的任务。这是因为,在查询语法结......
  • mysql备忘录
    MySQL8下载安装腾讯云Ubuntu20.04服务器下载MySQL8并开启远程服务下载sudoaptupdate#更新Ubuntu存储库sudoaptinstallmysql-server#下载mysqlsudosystemctlstatusmysql#查看mysql状态配置启动找到mysqld文件路径find/-namemysql.server或find/-namemy......
  • GreatSQL 8.0.32-24 今日发布
    1.新增特性1.1SQL兼容性1.2MGR1.3性能优化1.4安全2.稳定性提升3.其他调整4.bug修复5.GreatSQLVSMySQL6.GreatSQLReleaseNotesGreatSQL8.0.32-24版本发布,增加并行loaddata、(逻辑&CLONE)备份加密、MGR读写节点可绑定动态VIP、Oracle兼容扩......
  • springboot案列
    当创建多个springboot项目在同一个文件时,注意每一个springboot项目的serverport(端口)要不一样,否则会报错;另外要注意的是:在创建的springboot目录中;其他它文件的目录必须在springboot的项目的内部,否则会找不到指定的内容,报404错误 ......
  • 完整支持Oracle PL/SQL,星环科技KunDB高兼容性实现低成本国产化替代
    从中兴、华为等一系列高新科技企业被美国制裁,到俄乌冲突事件爆发后,西方各国相继宣布制裁俄罗斯,以Oracle、IBM、微软、SAP为代表的科技巨头暂停在俄服务,这一系列动作给我们敲响了加速国产化替代的警钟。数据库作为提供数据存储与处理能力的基础软件,是信息系统的基础、信息安全的基石......
  • 手把手实现springboot整合flowable、附源码-视频教程
    手把手实现springboot整合flowable、附源码-视频教程[toc]视频教程点击:https://www.bilibili.com/video/BV1fa411j7Q5/插件安装BPMN绘图可视化工具>FlowableBPMNvisualizer导入依赖<dependency><groupid>org.springframework.boot</groupid><artifact......