首页 > 数据库 >xxl-job适配sqlite本地数据库及mysql数据库。可根据配置指定使用哪种数据库。

xxl-job适配sqlite本地数据库及mysql数据库。可根据配置指定使用哪种数据库。

时间:2024-09-20 19:20:40浏览次数:3  
标签:sqlite spring 适配 数据库 job datasource mysql xxl

xxl-job整合sqlite

  1. 根据mysql的脚本,整理为sqlite的脚本,详见tables_xxl_job.sqllite.sql

  2. 创建sqlite数据库文件并执行上述sql,得到xxl-job-admin的resource下db/xxl-job

  3. xxl-job-admin的pom中添加sqlite驱动依赖

    <!--sqlite-jdbc -->
    		<dependency>
    			<groupId>org.xerial</groupId>
    			<artifactId>sqlite-jdbc</artifactId>
    			<version>3.43.2.1</version>
    		</dependency>
    
    
  4. 修改application.properties配置

    添加配置:

    # mysql||sqlite
    spring.profiles.active=${CURRENT_DBTYPE:sqlite}
    #spring.profiles.active=${CURRENT_DBTYPE:mysql}
    database.type: ${spring.profiles.active}
    

    mybatis配置:

    ### mybatis
    mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
    mybatis.configuration.database-id=${database.type}
    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    

    注释掉datasource相关配置

    ### xxl-job, datasource
    #spring.datasource.url=jdbc:mysql://127.0.0.1:3306/srvmonitor?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    #spring.datasource.username=root
    #spring.datasource.password=root
    #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
  5. 创建application-mysql.properties及application-sqlite.properties

    application-mysql.properties:

    ### mysql
    spring.datasource.url=jdbc:mysql://${MYSQL_HOST:127.0.0.1:3306}/srvmonitor?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    

    application-sqlite.properties:

    ### sqllite
    spring.datasource.driver-class-name=org.sqlite.JDBC
    spring.datasource.url=jdbc:sqlite::resource:${CONNECTION_URL:db/xxl_job}?date_string_format=yyyy-MM-dd HH:mm:ss
    
  6. 修改XxlJobAdminApplication启动类

    @SpringBootApplication
    public class XxlJobAdminApplication implements ApplicationContextAware {
    
    	public static void main(String[] args) {
            SpringApplication.run(XxlJobAdminApplication.class, args);
    	}
    
    	@Bean
    	public DatabaseIdProvider getDatabaseIdProvider() {
    		DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
    		Properties properties = new Properties();
    		properties.setProperty("SQLite", "sqlite");
    		properties.setProperty("MySQL", "mysql");
    		databaseIdProvider.setProperties(properties);
    		return databaseIdProvider;
    	}
    
    	@Override
    	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    		Environment environment = applicationContext.getBean(Environment.class);
    		String url = environment.getProperty("spring.datasource.url");
    		if (!StringUtils.isEmpty(url)) {
    			DataSourceUtil.setDbType(url);
    		}
    	}
    }
    
  7. 修改JobScheduleHelper中start方法中适配sqlite的语法

     preparedStatement = conn.prepareStatement(  "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
                            if ("sqlite".equalsIgnoreCase(DataSourceUtil.getDbType())) {
                                preparedStatement = conn.prepareStatement("select * from xxl_job_lock where lock_name = 'schedule_lock'");
                            } else {
                                preparedStatement = conn.prepareStatement("select * from xxl_job_lock where lock_name = 'schedule_lock' for update");
                            }
                            preparedStatement.execute();
    
  8. 所有dao中pageList、pageListCount、save方法对应的xml,按照databaseId为mysql和sqlite分别写两套

    sqlite不支持CONCAT函数

    sqlite不支持useGeneratedKeys="true"来自动获取新增后的id(需要用到的地方,改成用select last_insert_rowid()获取最新的id)

标签:sqlite,spring,适配,数据库,job,datasource,mysql,xxl
From: https://blog.csdn.net/weixin_43860634/article/details/142351660

相关文章

  • 用于参数和计算效率的超细粒度图像识别的降采样插入层适配器
    2024年9月17日提交的论文《Down-SamplingInter-LayerAdapterforParameterandComputationEfficientUltra-Fine-GrainedImageRecognition》一.研究背景研究问题:这篇文章要解决的问题是超细粒度图像识别(UFGIR),即将对象分类到极其细小的类别中,例如区分同一物种内的......
  • 利用sqoop将某一数据库从MySQL导入hive
    首先,为防止报错,将两个驱动包装在sqoop中:commons-lang-2.6.jar和hive-common-3.1.2.jar一般hive中都会有这两个驱动包,因此可执行如下命令:cp/opt/installs/hive/lib/commons-lang-2.6.jar/opt/installs/sqoop/lib/cp/opt/installs/hive/lib/hive-common-3.1.2.jar/opt/ins......
  • Admin.Net根据域名自动选择数据库
    namespaceAdmin.NET.Core;///<summary>///SqlSugar实体仓储///</summary>///<typeparamname="T"></typeparam>publicclassSqlSugarRepository<T>:SimpleClient<T>whereT:class,new(){protectedITenan......
  • 实战教程:Minio与etcd本地部署 + Milvus本地数据库配置(亲测成功)
    一.minio本地部署1.获取安装包wgethttps://dl.minio.io/server/minio/release/linux-amd64/miniowgethttps://dl.min.io/client/mc/release/linux-amd64/mcchmod+xminiochmod+xmc#命令移到系统路径直接调用命令cpminio/use/local/bincpmc/use/local/......
  • 时代变了,MySQL 早已不是最流行的数据库了
    以下文章来源于古时的风筝,作者风筝在StackOverflow上看到2024年技术趋势,关于数据库的部分,PostgreSQL是开发人员使用最多的数据库,超过MySQL了。虽然在国内好像不是这样。PostgreSQL在2018年的开发者调查中首次亮相,当时有33%的开发者正在使用它。而当年最受欢迎的还是MySQ......
  • python怎么创建数据库
    python怎么创建数据库?具体方法如下:import pymysql#数据库基本信息config = {          'host':'localhost',          'port':3306,          'user':'root',          'passwd':'root',          'db�......
  • 数据库系统工程师简介(数据库系统工程师是什么?有什么用?考什么?)
    一、数据库系统工程师是什么数据库系统工程师,属于计算机技术与软件(中级)专业技术资格。通过本考试的合格人员能参与应用信息系统的规划、设计、构建、运行和管理,能按照用户需求,设计、建立、运行、维护高质量的数据库和数据仓库;作为数据管理员管理信息系统中的数据资源,作为数据库管理......
  • tp3.2.3 config配置多数据库
    //数据库配置1‘DB_CONFIG1’=array(‘db_type’=>‘mysql’,‘db_user’=>‘root’,‘db_pwd’=>‘1234’,‘db_host’=>‘localhost’,‘db_port’=>‘3306’,‘厅闹db_name’=>‘thinkphp’),//数据库配置2‘DB_CONFIG2’=>‘这样,设返悄置2个数据库......
  • 浅析OceanBase数据库的向量化执行引擎
    本篇博客是偏数据库系统概念性的内容,不会深入到OceanBase中各个算子和表达式的在向量化中的详细设计和实现。背景为了提升OceanBase社区版用户解决问题的效率,OceanBase官方不久前推出了《OceanBase从入门到实践》系列课程。在第七期直播课程后,我们收到了不少用户的提......
  • QT绘图模块与数据库的结合
    QT绘图模块与数据库的结合使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频免......