jpa jql 时间范围查询_SpringBoot入门建站全系列(五)使用Spring-data-jpa操作数据库...

news/2024/5/20 11:09:31/文章来源:https://blog.csdn.net/weixin_39997310/article/details/110508895

v2-8cc086a1e5ab9d9bcad56133113ef36e_1440w.jpg?source=172ae18b

SpringBoot入门建站全系列(五)使用Spring-data-jpa操作数据库

SpringBoot操作数据库有多种方式,如

JDBC直接操作:太古老了,没人愿意这样玩

Mybatis插件:比较时髦,比较适合sql复杂,或者对性能要求高的应用,因为sql都是自己写的。

Spring-data-jpa: 使用hibernate作为实现,基本上不需要写sql,因为sql都是统计的,总是会产生多余的查询,性能上相对而言会低,但不绝对,影响性能的因素是多种的,这里说的性能是 从最终的查询的sql来对比的,毕竟生成的sql没有经过深思熟虑写出来的性能好。

JdbcTemplate:spring在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。Spring-data-jpa引入的时候,JdbcTemplate必然会被引入的。

当然还有其他中间件,主流使用的就是Mybatis和Spring-data-jpa。

品茗IT-SpringBoot专题-同步发布

品茗IT 提供在线支持:

一键快速构建Spring项目工具

一键快速构建SpringBoot项目工具

一键快速构建SpringCloud项目工具

一站式Springboot项目生成

如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。

一、引入依赖

需要同时引入数据库的connector和数据源datasource。和使用mybatis一样,只需要替换Mybatis引入的jar依赖即可。

依赖如下:

<dependency>

完整的依赖如下所示:

<project 

二、配置数据库连接信息

server.port=8080spring.application.name=pomitspring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=cff
spring.datasource.password=123456spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
spring.datasource.dbcp2.max-wait-millis=60000
spring.datasource.dbcp2.min-idle=20
spring.datasource.dbcp2.initial-size=2
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.dbcp2.connection-properties=characterEncoding=utf8
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.dbcp2.test-while-idle=true
spring.datasource.dbcp2.test-on-borrow=true
spring.datasource.dbcp2.test-on-return=false#JPA Configuration:  
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.naming.implicit-strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

这里面,包含了数据库连接信息、数据源的连接池配置信息、jpa配置信息。

spring.jpa.hibernate.ddl-auto属性,是对表的操作: - create 启动时删数据库中的表,然后创建,退出时不删除数据表 - create-drop 启动时删数据库中的表,然后创建,退出时删除数据表 如果表不存在报错 - update 如果启动时表格式不一致则更新表,原有数据保留 - validate 项目启动表结构进行校验 如果不一致则报错 - none 啥都不做

spring.jpa.hibernate.naming.implicit-strategy和spring.jpa.hibernate.naming.physical-strategy是对表和实体字段映射的默认处理方式。

实体名称映射到数据库中时,分成两个步骤:

  • 第一个阶段是从对象模型中提取一个合适的逻辑名称,这个逻辑名称可以由用户指定,通过@Column和@Table等注解完成,也可以通过被Hibernate的ImplicitNamingStrategy指定;
  • 第二个阶段是将上述的逻辑名称解析成物理名称,物理名称是由Hibernate中的PhysicalNamingStrategy决定;

PhysicalNamingStrategy和ImplicitNamingStrategy的区别:

  • 从处理的效果上来看,其实没有什么区别,但是从程序设计分层的角度来看,类似于MVC的分层,ImplicitNamingStrategy只管模型对象层次的处理,PhysicalNamingStrategy只管映射成真实的数据名称的处理,但是为了达到相同的效果,比如将userName映射城数据列时,在PhysicalNamingStrategy决定映射成user_name,但是在ImplicitNamingStrategy也可以做到;
  • 从处理的场景来看, 无论对象模型中是否显式地指定列名或者已经被隐式决定,PhysicalNamingStrategy都会应用; 但是对于ImplicitNamingStrategy,仅仅只有当没有显式地提供名称时才会使用,也就是说当对象模型中已经指定了@Table或者@Entity等name时,设置的ImplicitNamingStrategy并不会起作用。

所以,这里的配置,映射到表字段时,所有点都被下划线替换,骆驼情况也被下划线替换。默认情况下,所有表名都以小写生成

三、使用Spring-data-Jpa

3.1 表与Java实体

假设我们有一张这个表user_role :

v2-8514a07da1a405eb3f0b7cbb3da2a4cf_b.jpg

实体:

package 

3.2 建立Dao层进行数据库访问

UserRoleDao:

import 

可以看到,使用Spring-data-jpa就是就这么简单,只需要继承CrudRepository即可。

同时,Spring-data-jpa还支持findBy + 字段(And 字段)进行查询。deleteBy + 字段(And 字段)进行删除。

分页等其他操作后续再讲。

四、service逻辑调用Dao。

UserRoleService:

import 

五、开放接口调用service

MybatisRest:

import 

六、启动

package 

喜欢这篇文章么,喜欢就加入我们一起讨论SpringBoot技术吧!

v2-49b2e5bf337f7ecd52a09a46bd7f4fab_b.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_773224.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

editor 插入图片之后将光标放到右侧_8个字,9张图教会你用PPT制作gif | 附赠3个gif图片网站...

首图送大家一个gif今儿想来和大家讲讲怎么用PPT做出你想要的gif动图&#xff0c;没错&#xff0c;就是PPT。简单来说&#xff0c;其实就是8个字&#xff1a;构思、作图、动画、录屏。就以这个首图为例吧方法一 < 构思 >知道自己想做什么风格的图&#xff0c;要起到什么作…

java与seo_学习seo和学习java哪个更好

SEO一个seo行业站点&#xff0c;科学的内容制作应该与seo相关&#xff0c;且内容本身是有人搜索的。seo和java哪个更好是有人搜索的语句&#xff0c;且与seo是强相关的&#xff0c;对于seo教程自学网来讲&#xff0c;这样的内容再适合不过了。任何一门技术&#xff0c;如果精通…

打开特定的网站特别慢_[独立站运营] 网站用户体验 — 可能是Google SEO最重要的部分...

前言&#xff1a;做独立站运营&#xff0c;SEO优化的重要性不言而喻。而做跨境电商独立站运营&#xff0c;更离不开SEO优化&#xff0c;尤其是针对Google搜索引擎。正文&#xff1a;Google拥有40多亿的网络用户&#xff0c;每天将近50亿的搜索量&#xff0c;每秒63000搜索结果显…

通过url账号密码登录其他网站_使用pyppeteer淘宝登录

使用pyppeteer淘宝登录&#xff0c;获取Cookies现在淘宝的商品搜索页必须要登录才能见&#xff0c;所以必须要cookies才能进行下一步操作。本期介绍如何使用pyppeteer登录淘宝&#xff0c;获取Cookies。pyppeteer介绍地址&#xff1a;https://github.com/miyakogi/pyppeteer介绍…

在线小说网站的设计与实现(附源码)

2019独角兽企业重金招聘Python工程师标准>>> 最近在做一个课程设计&#xff0c;在线小说网站的设计&#xff0c;以下是课题要求&#xff0c;需要项目练手的童鞋可以试试身手。 由于最近新学了JavaEE&#xff0c;所以采用了jspservlet来写&#xff0c;前端部分用了少…

ai png转矢量图_有哪些免费下载png图片的网站?

为了减少广大设计朋友们的工作量&#xff0c;Fotor懒设计给大家推荐9个免扣素材网站&#xff01;重要的是免费&#xff01;免费&#xff01;免费&#xff01;直接上干货&#xff01;01.PNGimg它还提供各种分类&#xff0c;有动物、电影、人物、电子产品、食物等等&#xff0c;需…

暂停服务器网站,服务器重启 iis网站暂停

服务器重启 iis网站暂停 内容精选换一换访问IIS搭建的网站不通&#xff0c;报错404。IIS上绑定的域名只填写了主机名&#xff0c;没有指定IP地址。本节操作指导用户修改IIS上绑定的域名&#xff0c;以Windows Server 2008 R2操作系统云服务器为例。登录服务器&#xff0c;选择“…

一个很有特色的网站,有些屏保/Applets,以及一个好用的Unlocker

Update: 按图索骥找到了这个站点&#xff1a;http://www.softpedia.com眼花缭乱&#xff0c;软件全的像猪头一样-----------------------------------------来自&#xff1a;http://ccollomb.free.fr/事实上我从这里找到的&#xff1a;http://yackol.com/blog/ &#xff0c;这是…

Castle开发系列文章上了Castle的官方网站

最近有些忙&#xff0c;Blog更新的速度明显有些慢了&#xff0c;也是很久没有上Castle的官方网站了&#xff0c;今天Terry82&#xff08;跟我名字有点像&#xff09;的朋友告诉我Castle 开发系列文章在Castle官方网站上有链接&#xff0c;上去看了一下&#xff0c;还真是&#…

C# 代码生成器 网站架构设计

自己写的一个 web 版简易 C# Code Generator&#xff0c;可快速产生某个数据库中&#xff0c;所有表 Mapping 的 C# 3.0 类。可当作网站分层开发、表单大量传递用户输入值、在内存里持久化保存值之用&#xff0c;亦可当作 NHibernate 等 O/R Mapping 框架套用时的 C# 代码生成器…

读读书,走走路——【读书】SEO智慧——搜索引擎优化与网站营销革命

首先是应该和大家道个歉&#xff0c;这已经很久没有更新了吧&#xff0c;希望大家原谅&#xff01;别人保研的日子各种轻松&#xff0c;我却各种忙碌&#xff0c;也许是想多做点事情&#xff0c;也许是心太急了点&#xff0c;也许是不想辜负老师的期望&#xff0c;总是找不到自…

python之_「svd」python之SVD函数介绍 - seo实验室

svd 详情&#xff1a;https://www.cnblogs.com/denny402/p/5096491.html我们看到一开始随机生成的数组与使用mat函数之后的类型是发生了变化的&#xff0c;尽管他们显示的东西没有什么区别&#xff0c;但是实质上&#xff0c;他们的类型是不同的。调用mat()函数可以将数组转换为…

winform怎么向网站发送json_JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总...

本文一是在为测试过程中遇到json返回格式时提供测试思路&#xff0c;二是几乎所有国内的资料都混淆了json和jsonp的区别——这是两种技术&#xff1b;以及json和jsonp hijacking的区别——这是两个漏洞&#xff0c;这里做个解释。1、概念1)什么是jsonjson(JavaScript Object No…

编程要趁早 BI推荐8个编程学习网站

最近一个热门话题是雅虎以3000万美元收购了移动阅读应用Summly&#xff0c;真正让人吃惊的不是3000万美元的价格值不值&#xff0c;而是Summly的开发者--只有17岁的尼克达洛伊西奥。他12岁开始学习编程&#xff0c;2011年&#xff08;15岁时&#xff09;因Summly从李嘉诚基金获…

Java系的大网站架构-LinkedIn和淘宝

用Java的大网站很多&#xff08;LinkedIn&#xff0c;淘宝&#xff09;&#xff0c;当然用LAMP&#xff08;PHPMySQL&#xff09;的更多&#xff08;Facebook是把PHP转成C编译的&#xff0c;也算&#xff09;&#xff0c;用ASP.NET也有一些&#xff08;如Stackoverflow&#xf…

在github创建个人网站

2019独角兽企业重金招聘Python工程师标准>>> 详细见http://xieweizhong.tk/blog/ At first, I tried jeklly to create the static website on the github, but I found that it was difficult for me. Thus, I google the other way to create static website on g…

如何成功打造一个能够赚钱的个人博客网站?

2019独角兽企业重金招聘Python工程师标准>>> 今天的天气格外开朗&#xff0c;心情也自然好了很多&#xff0c;所以一到公司做下来&#xff0c;充满了激情和斗志。工作要继续做&#xff0c;日记要坚持写。由于最近一段时间&#xff0c;笔者发现国内一下子出来了大批的…

JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果...

一、photos.html页面&#xff0c;点击每一张缩略图&#xff0c;就在占位符的位置那里&#xff0c;显示对应的大图。 看到的页面效果是这样的&#xff1a; 1、实现思路 这个功能在之前的JavaScript美术馆那里已经实现了。 首先在页面中使用ul列表显示出所有的缩略图&#xff0c;…

openssl学习笔记--CA及https网站证书配置

一、需求分析&#xff1a;证书服务器自建CA&#xff0c;网页服务器通过CA创建网页主机证书&#xff0c;以实现网站内容安全传输。二、拓扑图&#xff1a;三、相关配置&#xff1a;1. 证书服务器&#xff08;ns1&#xff09;创建自签证书&#xff1a;[rootns1 ~]# cd /etc/pki/C…

网站初学笔记3-HTML实用元素

HTML中链接邮件地址&#xff1a; <!DOCTYPE html><html><body> <address>Written by <a href"mailto:webmasterexample.com">Donald Duck</a>.<br> Visit us at:<br>Example.com<br>Box 564, Disneyland<b…