boot项目配置文件中的数据库地址怎样根据本机自动获取

boot项目配置文件中的数据库地址怎样根据本机自动获取,第1张

1通过Java获取本机ip,可以使用InetAddress类的getLocalHost()方法。

2通过Spring Boot配置文件(比如applicationyml)来设置数据库连接,可以使用Spring Boot placeholder实现,如:${localip}:3306

3在SpringBoot应用程序启动时,程序可以在启动参数里指定localip属性,获取本机ip,并与端口号组合成数据库链接地址。

1、去quartz官网下载quartz222版本的压缩包,quartz下载,注意:quartz230版本的在docs目录下没有发现dbtable目录(存放生成数据库表的sql文件的目录)。

2、执行创建数据库表的sql文件,我使用的是mysql数据库。

生成的表结构

3、在springboot项目中配置quartz。

31、两种方式配置quartz,

311、第一种是使用自定义的quartzproperties,这是简单配置,如果有其他配置可以参考,quartzproperties配置详情

orgquartzjobStoreuseProperties:true

#orgquartzschedulerinstanceName: quartzScheduler

#orgquartzschedulerinstanceId = AUTO

orgquartzthreadPoolclass = orgquartzsimplSimpleThreadPool

orgquartzthreadPoolthreadCount = 15

orgquartzthreadPoolthreadPriority: 5

orgquartzthreadPoolthreadsInheritContextClassLoaderOfInitializingThread: true

orgquartzjobStoreclass = orgquartzimpljdbcjobstoreJobStoreTX

orgquartzjobStoredriverDelegateClass=orgquartzimpljdbcjobstoreStdJDBCDelegate

orgquartzjobStoreisClustered = false

#orgquartzjobStoreclusterCheckinInterval=20000

orgquartzjobStoretablePrefix = qrtz_

orgquartzjobStoremisfireThreshold = 60000

orgquartzjobStoremaxMisfiresToHandleAtATime = 20

orgquartzschedulerrmiexport: false

orgquartzschedulerrmiproxy: false

orgquartzschedulerwrapJobExecutionInUserTransaction: false

登录后复制

312、使用配置文件配置springboot中的SchedulerFactoryBean。

@Configuration

public class SchedulerConfig implements SchedulerFactoryBeanCustomizer {

@Autowired

private DataSource dataSource;

@Override

public void customize(SchedulerFactoryBean schedulerFactoryBean) {

schedulerFactoryBeansetStartupDelay(10);

schedulerFactoryBeansetOverwriteExistingJobs(true);

schedulerFactoryBeansetDataSource(dataSource);

ClassPathResource resource = new ClassPathResource("quartzproperties");

Properties properties = new Properties();

InputStream in= null;

try {

in = resourcegetInputStream();

BufferedReader bf = new BufferedReader(new InputStreamReader(in, "UTF-8"));

propertiesload(bf);

schedulerFactoryBeansetQuartzProperties(properties);

} catch (IOException e) {

eprintStackTrace();

}

}

}

登录后复制

321、第二种方式是在applicationproperties文件中的配置,applicationproperties文件中的springquartzproperties 加上quartzproperties中的键值对,效果与quartzproperties类似。

springquartzpropertiesorgquartzjobStoretablePrefix = qrtz_

springquartzpropertiesorgquartzthreadPoolthreadCount = 10

登录后复制

项目中配置orgquartzjobStoretablePrefix = qrtz_,这个配置是默认查询数据库中表的前缀,默认是QRTZ_,以下sql中通过rpt方法组装一条新的sql,替换掉{0},{1},如果没有明确声明就会使用默认值 orgquartzjobStoretablePrefix = QRTZ_,orgquartzschedulerinstanceName: quartzScheduler。

如果进行简单的定时任务,可以使用springboot中默认的quartz配置。

322 自定义配置springboot中的SchedulerFactoryBean。

@Configuration

public class SchedulerConfig implements SchedulerFactoryBeanCustomizer {

@Autowired

private DataSource dataSource;

@Override

public void customize(SchedulerFactoryBean schedulerFactoryBean) {

schedulerFactoryBeansetStartupDelay(10);

schedulerFactoryBeansetOverwriteExistingJobs(true);

schedulerFactoryBeansetDataSource(dataSource);

}

}

登录后复制

4、新建Job

public class TestJob implements Job {

@Override

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

Systemoutprintln(SystemnanoTime());

}

}

登录后复制

5、数据库中新增job任务脚本,comexamplequartzdemojobTestJob是我本地的测试Job,需要修改成你自己Job类。

INSERT INTO `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`, `DESCRIPTION`, `JOB_CLASS_NAME`, `IS_DURABLE`, `IS_NONCONCURRENT`, `IS_UPDATE_DATA`, `REQUESTS_RECOVERY`, `JOB_DATA`) VALUES ('quartzScheduler', 'test2Job', 'testGroup', NULL, 'comexamplequartzdemojobTestJob', '1', '0', '0', '0', NULL);

INSERT INTO `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `JOB_NAME`, `JOB_GROUP`, `DESCRIPTION`, `NEXT_FIRE_TIME`, `PREV_FIRE_TIME`, `PRIORITY`, `TRIGGER_STATE`, `TRIGGER_TYPE`, `START_TIME`, `END_TIME`, `CALENDAR_NAME`, `MISFIRE_INSTR`, `JOB_DATA`) VALUES ('quartzScheduler', 'testTrigger2', 'testTriggerGroup', 'test2Job', 'testGroup', NULL, '1554122914000', '1554122913000', '5', 'ACQUIRED', 'CRON', '1554039857000', '0', NULL, '0', NULL);

INSERT INTO `qrtz_cron_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `CRON_EXPRESSION`, `TIME_ZONE_ID`) VALUES ('quartzScheduler', 'testTrigger2', 'testTriggerGroup', '0/1 ', 'Asia/Shanghai');

登录后复制

6、启动项目,查看控制台打印的日志,成功

首先导入了相应的jar包

<!--thymeleaf--><dependency>

<groupId>orgthymeleaf</groupId>

<artifactId>thymeleaf-spring5</artifactId></dependency><dependency>

<groupId>orgthymeleafextras</groupId>

<artifactId>thymeleaf-extras-java8time</artifactId></dependency><!--数据库连接--><dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId></dependency><!--mybatis整合springboot--><dependency>

<groupId>orgmybatisspringboot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>212</version></dependency><!--druid数据源--><dependency>

<groupId>comalibaba</groupId>

<artifactId>druid</artifactId>

<version>1122</version></dependency>1234567891011121314151617181920212223242526272829

对数据源,mybatis,和上传文件进行配置

spring:

datasource:

type: comalibabadruidpoolDruidDataSource username: root password: shw123zxc url: jdbc:mysql://localhost:3306/mybatisuseSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC driver-class-name: commysqlcjjdbcDriver servlet:

multipart:

max-request-size: 10MB #上传文件的最大总大小

max-file-size: 10MB #上传单个文件的最大大小mybatis:

type-aliases-package: cncodeweipojo mapper-locations: classpath:/mapper/xml1234567891011121314

然后写一个文件上传的html,注意表单的==enctype属性要设置为multipart/form-data==

<!DOCTYPE html><html lang="en"><head>

<meta charset="UTF-8">

<title>Title</title></head><body>

<h1>文件上传</h1>

<form method="post" enctype="multipart/form-data" action="/upload">

<input type="file" name="file">

<input type="submit" value="上传">

</form></body></html>1234567891011121314

然后写一个Mapper和对应的Mapperxml和service

@Mapper@Repositorypublic interface PhotoMapper {

// 向数据库中添加

public int addPhoto(Photo photo);

// 从数据库中取出

public Photo getPhotoById(@Param("id") int id);}123456789

<xml version="10" encoding="UTF-8" ><!DOCTYPE mapper

PUBLIC "-//mybatisorg//DTD Mapper 30//EN"

">

insert into 工资表 values(编号,姓名,小时工资) select 编号,姓名,小时工资 from 员工表 where 编号=‘输入的编号’) 或者 insert into 工资表 select 编号,姓名,null,null,null,小时工资 from 员工表 where 编号=‘输入的编号’ 你试试,我不确定

在写接口的过程中,通过会从数据库表中查询数据或将数据插入到数据库中,而如何将查询出的数多个数据存放到变量中使用呢,本篇文章主要是针对在SpringBoot框架中,将xml中的sql语句查询得到的数据存入变量。

在SpringBoot框架中,通常都是在Mapper中调用xml文件,sql语句都是在xml文件中写的,而不是在Java代码中直接利用connection连接数据库进行查询,这样层次更清晰,代码也更容易维护,例如:

SpringBoot框架的Mapper层中会写方法名以及入参:

String findSubsidiaryEmail(CustomerServiceInvalidBO customerServiceInvalidBO);

此实现使用中间层连接池管理器。分布式事务实现一产生一个可以用于分布式事务的Connection对象,并且几乎总是参与连接池。此实现使用中间层事务管理器,并且几乎总是使用连接池管理器。

以上就是关于boot项目配置文件中的数据库地址怎样根据本机自动获取全部的内容,包括:boot项目配置文件中的数据库地址怎样根据本机自动获取、springboot+quartz持久化到数据库各表含义、springboot上传文件写入数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9769183.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存