
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上传文件写入数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)