springboot项目,用hibernate *** 作数据库问题

springboot项目,用hibernate *** 作数据库问题,第1张

springboot项目,用hibernate *** 作数据库问题 1

:新建Spring Boot项目,依赖选择JPA(spring-boot-starter-data-jpa)和Web(spring-bootstarter-web)。 配置基本属性 在applicationproperties里配置数据源和jpa的相关属性 springdatasourcedriverClassName=commysqljdbcDriver spring

以下的问题就可以完美的解决了

自定义注解,切入点是controller的增、删、改方法,切面中获取到了参数、类名、方法名,在修改前要通过id查询数据库内容,怎么获取对应的service对象

非常简单:

1 加一个Interceptor,

2在onPreHandle中看看能不能处理

注:只是这样一来的话,就相当于又把请求拦截了一遍

Spring Boot Response可以多次返回,采用的是一种分层的模式,它可以在不同的层次上返回不同的信息。在Controller层,可以根据不同的请求返回不同的信息,比如可以返回JSON或XML格式的数据;在Service层,可以根据不同的业务逻辑返回不同的结果;在DAO层,可以根据不同的数据库查询返回不同的结果。Spring Boot Response可以让开发者在不同的层次上返回不同的数据,更加灵活。

BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。

beatlsql 优点

引入依赖

这几个依赖都是必须的。

整合阶段

由于springboot没有对 beatlsql的快速启动装配,所以需要我自己导入相关的bean,包括数据源,包扫描,事物管理器等。

在application加入以下代码:

在resouces包下,加META_INF文件夹,文件夹中加入spring-devtoolsproperties:

restartincludebeetl=/beetl-232jar

restartincludebeetlsql=/beetlsql-231jar

在templates下加一个indexbtl文件。

加入jar和配置beatlsql的这些bean,以及resources这些配置之后,springboot就能够访问到数据库类。

举个restful的栗子

初始化数据库的表

bean

数据访问dao层

接口继承BaseMapper,就能获取单表查询的一些性质,当你需要自定义sql的时候,只需要在resouses/sql/accountmd文件下书写文件:

其中“=== ”上面是唯一标识,对应于接口的方法名,“ ”后面是注释,在下面就是自定义的sql语句,具体的见官方文档。

web层

这里省略了service层,实际开发补上。

通过postman 测试,代码已全部通过。

个人使用感受,使用bealsql做了一些项目的试验,但是没有真正用于真正的生产环境,用起来非常的爽。但是springboot没有提供自动装配的直接支持,需要自己注解bean。另外使用这个orm的人不太多,有木有坑不知道,在我使用的过程中没有遇到什么问题。另外它的中文文档比较友好。

1,需要配置DynamicDataSource,DynamicDataSourceAspect,DynamicDataSourceContextHolder,DynamicDataSourceRegister,TargetDataSource来完成多数据源的配置 2,需要在配置文件中定义多数据源 3,测试过只有在前端调用过程中能够用多数据源,如果在各个中心去配置是行不通的,已经亲测过了。可以看看csdn上的我的这篇文章: spring boot动态数据源配置

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、启动项目,查看控制台打印的日志,成功

它分成以下几个步骤: 建立mock; 将mock和待测试的对象连接起来; 在mock上设置预期的返回值; 开启replay模式,准备记录实际发生的调用; 进行测试; 验证测试结果,调用顺序是否正确,返回值是否符合期望;

以上就是关于springboot项目,用hibernate *** 作数据库问题全部的内容,包括:springboot项目,用hibernate *** 作数据库问题、SpringBoot在切面中怎么查询修改前的数据、springbootresponse多次返回等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9430924.html

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

发表评论

登录后才能评论

评论列表(0条)

保存