专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

SpringBoot数据库操作的应用

  1。JDBCHikariDataSource
  在SpringBoot2。x项目中,默认使用Hikari连接池管理数据源。相比于传统的C3P0、DBCP、Tomcatjdbc等连接池更加优秀。
  当项目pom。xml引入springbootstarterjdbc启动器依赖后,即可自动导入Hikari,该启动器不但依赖它,还会对其自动配置并创建数据源。我们以MySQL数据库为例,介绍如何使用Hikari。
  数据源是啥?为什么要用?怎么用?1。1应用实例
  演示SpringBoot如何通过JDBCHikariDataSource完成对Mysql操作。
  (1)数据库和表创建数据库DROPDATABASEIFEXISTSspringboot;CREATEDATABASEspringboot;USEspringboot;创建表CREATETABLEfurn(idINT(11)PRIMARYKEYAUTOINCREMENT,idnameVARCHAR(64)NOTNULL,家居名makerVARCHAR(64)NOTNULL,厂商priceDECIMAL(11,2)NOTNULL,价格salesINT(11)NOTNULL,销量stockINT(11)NOTNULL,库存imgpathVARCHAR(256)NOTNULL照片路径);初始化家居数据INSERTINTOfurn(id,name,maker,price,sales,stock,imgpath)VALUES(NULL,北欧风格小桌子,熊猫家居,180,666,7,assetsimagesproductimage6。jpg);INSERTINTOfurn(id,name,maker,price,sales,stock,imgpath)VALUES(NULL,简约风格小椅子,熊猫家居,180,666,7,assetsimagesproductimage4。jpg);INSERTINTOfurn(id,name,maker,price,sales,stock,imgpath)VALUES(NULL,典雅风格小台灯,蚂蚁家居,180,666,7,assetsimagesproductimage14。jpg);INSERTINTOfurn(id,name,maker,price,sales,stock,imgpath)VALUES(NULL,温馨风格盆景架,蚂蚁家居,180,666,7,assetsimagesproductimage16。jpg);SELECTFROMfurn;
  (2)进行数据库开发,首先要在pom。xml文件中引入springbootstarterdatajdbc。SpringBoot不知道项目要操作Mysql还是Oracle,因此还需要导入数据库驱动,并指定对应版本。!进行数据库开发,引入datajdbcstarterdependencygroupIdorg。springframework。bootgroupIdspringbootstarterdatajdbcartifactIddependency!导入mysql驱动,如果使用版本仲裁,SpringBoot默认的版本为8。0。26dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdversion5。1。49versiondependency
  (3)在application。yml配置操作数据源的信息spring:datasource:配置数据源说明:如果没有配置useSSLtrue,启动项目会报红警告,但不影响使用url:jdbc:mysql:localhost:3306springboot?useSSLtrueuseUnicodetruecharacterEncodingUTF8username:rootpassword:123456driverclassname:com。mysql。jdbc。Driver
  (4)创建JavabeanFurn。javapackagecom。li。thymeleaf。bean;importlombok。AllArgsConstructor;importlombok。Data;importlombok。NoArgsConstructor;importjava。math。BigDecimal;author李version1。0DataNoArgsConstructorAllArgsConstructorpublicclassFurn{privateIntegerid;privateStringname;privateStringmaker;privateBigDecimalprice;privateIntegersales;privateIntegerstock;privateStringimgPath;}
  (5)测试类ApplicationTests。javapackagecom。li。thymeleaf;importcom。li。thymeleaf。bean。Furn;importorg。junit。jupiter。api。Test;importorg。springframework。boot。test。context。SpringBootTest;importorg。springframework。jdbc。core。BeanPropertyRowMapper;importorg。springframework。jdbc。core。JdbcTemplate;importjavax。annotation。Resource;importjava。util。List;author李version1。0演示如何在SpringBoot中开发测试类SpringBootTestpublicclassApplicationTests{这里使用spring的JDBCTemplateResourceprivateJdbcTemplatejdbcTemplate;TestpublicvoidcontextLoads(){使用RowMapper接口来对返回的数据进行封装(底层是反射setter)BeanPropertyRowMapperFurnrowMappernewBeanPropertyRowMapper(Furn。class);ListFurnfurnsjdbcTemplate。query(selectfromfurn,rowMapper);for(Furnfurn:furns){System。out。println(furnfurn);}查看底层使用的是什么数据源System。out。println(jdbcTemplate。getDataSource()。getClass());}}
  测试结果:
  spanstylecolor:E45649;ttdarkmodecolor:E45649;dependencyspanspanstylecolor:E45649;ttdarkmodecolor:E45649;groupIdspanorg。springframework。bootspangroupIdspanspanstylecolor:E45649;ttdarkmodecolor:E45649;artifactIdspanspringbootstartertestspanartifactIdspanspandependencyspan2。整合Druid到SpringBoot2。1Druid介绍alibabadruid:为监控而生的数据库连接池(github。com)
  官方使用文档alibabadruidWiki(github。com)
  Druid数据库连接池性能优秀,它除了提供性能卓越的数据池功能外,还继承了SQL监控,黑名单拦截等功能。强大的监控特性,通过Druid提供的监控功能,可以清楚知道连接池和SQL的工作情况,所以根据项目需要,我们也要掌握Druid和SpringBoot的整合。
  整合Druid到SpringBoot的方式:自定义方式引入starter2。2Druid基本使用
  (1)修改pom。xml,引入druid依赖!引入druid依赖dependencygroupIdcom。alibabagroupIddruidartifactIdversion1。1。17versiondependency
  (2)创建配置类DruidDataSourceConfig。java,将DruidDataSource注入容器packagecom。li。thymeleaf。config;importcom。alibaba。druid。pool。DruidDataSource;importorg。springframework。boot。context。properties。ConfigurationProperties;importorg。springframework。context。annotation。Bean;importorg。springframework。context。annotation。Configuration;importjavax。sql。DataSource;author李version1。0配置类ConfigurationpublicclassDruidDataSourceConfig{注入DruidDataSource通过ConfigurationProperties指定读取application。yml文件的数据我们就不需要调用DruidDataSource的setXxx方法来配置(不推荐)ConfigurationProperties(spring。datasource)BeanpublicDataSourcedataSource(){returnnewDruidDataSource();}}
  (3)测试类ApplicationTests。java(略,同上)
  测试结果:
  2。2。1一个问题
  问题:为什么我们注入了自己的数据源,默认的HikariDataSource就失效了?
  先来弄明白,默认的HikariDataSource是如何配置的:
  SpringBoot通过DataSourceAutoConfiguration。java来进行数据源的配置,在进行默认的配置之前,如果检测到容器中已经有DataSourceBean,就不会注入默认的HikariDataSource。
  因此,如果你注入了自己的数据源,就不会注入默认的HikariDataSource。
  DataSourceAutoConfiguration。java:
  2。3Druid监控功能2。3。1开启内置监控页
  怎样使用Druid的内置监控页面:内置监控页面是一个Servlet,具体配置看这里
  (1)在配置类中,启用druid的监控页功能:
  在web项目中使用web。xml配置,若在SpringBoot中,有两种方法注入Servlet注解和RegistrationBean,这里使用RegistrationBean
  DruidDataSourceConfig。java:packagecom。li。thymeleaf。config;importcom。alibaba。druid。pool。DruidDataSource;importcom。alibaba。druid。support。http。StatViewServlet;importorg。springframework。boot。context。properties。ConfigurationProperties;importorg。springframework。boot。web。servlet。ServletRegistrationBean;importorg。springframework。context。annotation。Bean;importorg。springframework。context。annotation。Configuration;importjavax。sql。DataSource;author李version1。0配置类ConfigurationpublicclassDruidDataSourceConfig{注入DruidDataSource通过ConfigurationProperties指定读取yml文件的前缀的数据ConfigurationProperties(spring。datasource)BeanpublicDataSourcedataSource(){returnnewDruidDataSource();}配置Druid的监控页功能BeanpublicServletRegistrationBeanstatViewServlet(){创建StatViewServletServletRegistrationBeanStatViewServletregistrationBeannewServletRegistrationBean(newStatViewServlet(),druid);设置初始化参数用户名和密码根据官方配置文件设置registrationBean。addInitParameter(loginUsername,olien);registrationBean。addInitParameter(loginPassword,123456);returnregistrationBean;}}
  (2)启动项目,浏览器中访问http:项目ip:项目端口项目名称druidindex。html,输入配置的用户名和密码,即可访问到内置的监控页面:
  2。3。2SQL监控
  配置StatFilteralibabadruidWiki(github。com)
  除了文档中的配置方式,也可在配置类中直接对数据源进行设置。
  修改DruidDataSourceConfig。java:
  启用SQL监控功能之后,在监控页中可以查看到所有对数据库发出的SQL语句:
  2。3。3Web关联监控
  Web关联监控配置
  Spring关联监控配置
  修改DruidDataSourceConfig。java:注入webStatFilter配置WebStatFilter,用于采集webjdbc关联的监控数据BeanpublicFilterRegistrationBeanwebStatFilter(){创建过滤器webStatFilterWebStatFilterwebStatFilternewWebStatFilter();FilterRegistrationBeanWebStatFilterfilterRegistrationBeannewFilterRegistrationBean(webStatFilter);设置webStatFilter的监控urlfilterRegistrationBean。setUrlPatterns(Arrays。asList());根据官方文档设置webStatFilter排除的urlfilterRegistrationBean。addInitParameter(exclusions,。js,。gif,。jpg,。png,。css,。ico,druid);returnfilterRegistrationBean;}
  启用URI监控功能之后,在监控页中可以查看到所有的Web应用情况和URI请求情况:
  2。3。4SQL防火墙
  Druid提供了WallFilter,它是基于SQL语义分析来实现防御SQL注入攻击的。具体配置看这里
  修改DruidDataSourceConfig。java:
  启用SQL防火墙之后,在监控页中可以查看到所有的SQL情况:
  2。3。5Session监控
  注意:这里的Session不包括Druid后台监控系统产生的Session
  Druid的Session监控不需要配置,在开启了内置监控功能后就可以使用了。
  2。4DruidStarter
  整合Druid到SpringBoot的方式有两种:自定义方式和引入starter。
  2。3中的所有例子中我们使用的是自己引入druid配置类方式整合druid和监控。此外,还可以引入DruidSrpingBootStarter,让程序员在SpringBoot项目中更加轻松集成Druid和监控。
  演示使用DruidStarter(演示之前,删除之前所有的自定义方式操作)
  (1)pom。xml引入druidspringbootstarter!引入druid的starterdependencygroupIdcom。alibabagroupIddruidspringbootstarterartifactIdversion1。1。17versiondependency
  (2)在application。yml文件中配置druid和监控功能spring:datasource:配置数据源如果没有配置useSSLtrue,启动项目会报红警告,但不影响使用url:jdbc:mysql:localhost:3306springboot?useSSLtrueuseUnicodetruecharacterEncodingUTF8username:rootpassword:123456driverclassname:com。mysql。jdbc。Driver配置druid和监控功能druid:statviewservlet:(1)开启监控页enabled:trueloginusername:jackloginpassword:1234resetenable:falsewebstatfilter:(2)启用web监控功能enabled:trueurlpattern:exclusions:。js,。gif,。jpg,。png,。css,。ico,druidfilter:stat:(3)启用sql监控功能slowsqlmillis:1000单位mslogslowsql:true启用慢查询的sql日志enabled:truewall:(4)启用sql防火墙功能enabled:trueconfig:droptableallow:false是否允许进行删除表的操作selectallcolumnallow:false是否允许查询所有字段的操作3。练习
  将异常处理、注入Servlet、Filter、Listener,Tomcat切换,数据库操作(HikariDataSourceDruidDataSource)相关代码和案例写一遍

刀郎养了10年的徒弟,云朵到底有多厉害?她是一个被刀郎养了10年的徒弟。当现在看到她,仿佛看到了年轻时的我,她出身寒门,却能成功走向春晚的舞台,这些肯定是刀郎的功劳。80后的她,有着非常好的嗓音,干净而有磁性,因为家里条辟谣抗美援朝三大谣言!别再误导年轻人了,承认志愿军厉害很难?作为新时代的我们,作为新青年的我们,中华民族的伟大复兴,实现中国梦我们才是主力,所以我们要有所担当,不负祖国的期望,从小培养爱国情怀,弘扬优秀传统文化和民族精神。人民有信仰,民族有YEEZY700最佳平替才三位数!Kanye气的后槽牙咬碎我真的会谢,这也太像YEEZY700了!上回提到阿迪新款ZX22boost,侧身和YEEZY700颇为相似,同样搭载boost技术,价格亲民,堪称Yeezy700平替的不错选择,可痘印全攻略不同类型的治疗选择要说长痘问题Top10,一定有去痘印。试问谁没长过几颗痘呢?长痘已经够烦了,但好歹经过治疗可以好。但留下的痘印,很久无法褪去!有时候连底妆遮瑕都盖不住,简直太太太太影响心情了!!!5cm的上衣是怎样的存在?也就只有钟楚曦敢穿了吧钟楚曦近年来的影视资源都还算非常不错,毕竟她本身就是谋女郎出身,不管是在颜值还是身材上,又或者是演技上都是比较出众的。钟楚曦的好身材一度让人误认为她是模特出身的演员,但其实她一直都怎样才能保持50岁都没有皱纹请慢慢看我写的实践经验人老色衰,都是指30多岁的女性。随着年龄的增长,胶原蛋白,玻尿酸的流失,皮肤逐渐松驰老化产生斑点和皱纹。作为女性,永远都希望自己年轻漂亮,不愿意老去。那怎样才能保持相对年轻化呢?现绝美秘境!成都周边徒步吸氧,观日出星空之山林,打卡川版小天坛终于!在咱们的共同努力之下,今天的成都,可以说是已经胜利一大半了!三三相信,再过几天,成都一定会恢复往日的繁荣热闹,居家听指挥,是为了能再次站在阳光下欢笑,去想去的地方玩耍!所以没最惨创始人25岁意外去世后,公司归了大舅子,妻子改嫁前夫司机2022年,申通快递的老板娘陈小英以100亿的身价,位列胡润全球白手起家女富豪榜第60名。很少有人知道,这位叱咤商界的快递女王,却独独选了一位司机当自己的丈夫。这个司机还曾是陈小英李易峰出道至今最好看的10部影视剧,无论是否下架,先收藏为妙劣迹艺人可以说是近些年网络新的流行语,对于艺人来说,一旦扣上这个帽子,基本上是职业生涯提前结束,这辈子都难以翻身了。最近,一位颇受大家欢迎的男性演员成为反面教材,加入了这个群体,又20岁法图麦晒近照迎中秋,穿露脐衫秀蚂蚁腰,月牙纹身诉思父之情9月9日,临近中秋,寓意着月圆人团圆游子寄托情怀的日子里,远在异国他乡的哈文母女俩亦是不约而同以自己的方式迎接中秋佳节。转瞬间,距离央视名嘴李咏喉癌病逝已过去快4年,一家三口虽说无一轮明月腾空起,遥寄相思泪连连头号周刊今夜月正明今夜合家共团圆唯有我和你再难共此时一轮明月腾空起遥寄相思泪连连我在月下独徘徊月儿圆,泪水流你在远方可安好是否也在赏月圆月儿圆圆照我心请把我的思念带给你爱是你和我痛
双拳难敌四手!湖人输给快船,詹姆斯46分9记三分!快船三人20湖人主场迎战快船,面对同城对手,已经两连胜的湖人迫切想击败对手,提升排名。但本场比赛,除了詹姆斯表现出色,其他球员发挥一般,面对快船多名球员的神勇发挥,最终以115133输给快船。新发现的一种翼龙使用微小的牙齿像鲸一样进食早在2021年,我们就听说过一种翼龙,它的嘴里长满了大而尖的牙齿。那么,科学家们现在发现了一种走另一个极端的翼龙,因为它用400多颗小钩牙来捕捉猎物。这种小型生物的几乎完整的骨架化快船大胜湖人!伦纳德杀死比赛,雷吉鲍威尔大暴走,乔治曝隐患北京时间1月25号湖人和快船比赛,这场比赛上半场快船打出了无解的攻势,上半场就轰出了77分。可惜的是,下半场快船出现松懈,让湖人迫近到10分,这是让人遗憾的一个结果。幸好快船领先的前篮协裁判长错漏判难免,如今基本没有黑哨,没见过教练绊球员中央电视台体育节目主持人于嘉采访前国际级裁判高树颂,其中关于黑哨错漏判八字方针裁判艺术有一些深刻的解读,当然球迷对于很多是不认可,并且事实也证明,高老师的言论也是具有倾向保护裁判性长征九号超级火箭运载能力将是长征五号的五倍多中国正在研制一种超重型火箭,其威力是目前最强大的运载火箭长征五号的五倍多。中国长征九号运载火箭仿真图片。在上周举行的一次会议上,来自中国运载火箭技术研究院的高级火箭设计师顾表示,新最新消息!NBA近期5支表现高光的球队,冠军或将在他们中产生NBA进行的如火如荼,有的球队高歌猛进,有的球队则陷入低迷,一起来盘点一下近期状态表现高光的球队。东部现在最火爆的两支球队就是绿军凯尔特人队和76人队,两支球队分居第一和第二位,在春节假期孕妇怎么过?记住三防四做,安心过大年春节假期孕妇怎么过?记住三防四做,安心过大年虽然说孕期并没有太多绝对的禁忌,但是日常生活中有一些问题还是要注意。特别是赶上春节这样特殊的节假日,孕妈妈想要更舒适安全地度过,就更需要科学家从宇宙的角度看银河系,有一点非常奇怪银河系有其特殊性吗?银河系的特殊性。MiguelA。AragonCalvoIllustrisTNGproject人类及其家园在宇宙中可能并没有多少特殊性,但与此同时也存在另外一种偏山西平遥古城大家好,我是暖阳。今天我带大家去一趟山西平遥古城。北京平遥,火车,北京站平遥站。来到平遥古城,我们这先要把住宿安排好,看看我们定的住宿棒不棒,到了之后非常的惊艳。审美都在我的点上,卫报评2022百大男足球星71100名迈尼昂74ampampamp洛里76ampampamp诺伊尔91直播吧1月25日讯卫报评选出了2022年世界百大男足球星的第71100名,其中迈尼昂第74,洛里第76,诺伊尔第91。2022年世界百大男足球星第71100名71。利瓦科维奇萨格勒著名球星世界杯成绩排行,贝利次席,梅西进入前五,C罗惨垫底参加过三届以上的部分著名球星世界杯成绩排行,贝利次席,梅西进入前五,C罗惨垫底。世界杯小组赛出局计10分,16强20分,8强30分,四强40分,亚军50分,冠军70分。有积分的前提
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网