Spring Data JPA

SpringBoot从入门到放弃之配置Spring-Data-JPA自动建表

六眼飞鱼酱① 提交于 2020-07-27 11:38:51
pom文件配置引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> 配置文件进行jpa配置 这里有两个配置需要说明一下; show_sql: true 在控制台显示jpa生成的sql format_sql: true 控制台显示生成的sql的时候进行格式化 ddl-auto: update 这种配置方式意思是没有表的时候新建表,有表的话就不会删除再新建,字段有更新的时候会自动更新表结构 实体创建 服务启动 可以看到咋子控台已经打印出建表的sql语句了 总结 虽然这种自动建表的方式很方便,但是不建议在项目中使用这种方式还是要慎重,最好自己手写sql去建表。 欢迎大家去 我的博客 瞅瞅,里面有更多关于测试实战的内容哦!! 来源: oschina 链接: https://my.oschina.net/u/4417652/blog/4318112

springboot+thymeleaf处理带搜索条件的分页问题解决思路

半腔热情 提交于 2020-05-08 05:17:21
一开始写项目的时候,没用ajax,导致做搜索分页功能的时候废了好大的劲,在这里分享一下处理这个问题的思路。 框架用的springboot,通过thymeleaf模板和前端交互,没有使用ajax,所以数据都是在域对象放的。分页用的springdatajpa的分页,他个其他的分页工具大同小异,优点在于不用在引入新的依赖,直接通过查询得到的就是Page对象,缺点就是springdatajpa自带的分页工具其起始页是从0开始的,这一点比较恶心,哈哈。 主要思路就是把搜索条件和分页的请求地址都在域中定义,然后再js方法中得到这些信息,发送请求的时候调用js方法,拼接带搜索条件的参数。 --page分页-- 代码写的啰嗦,抽时间优化一下 <div class = " box-footer " th:fragment= " page " xmlns:th= " http://www.thymeleaf.org " > <div class = " modal-footer no-margin-top " > <div class = " pull-left " > <div class = " form-group form-inline " > 总共 <span th:text= " ${page.totalPages} " ></span> 页,共<span th:text= " $

简述 JPA 与 Spring Data JPA 与 Hibernate

情到浓时终转凉″ 提交于 2020-05-02 21:26:33
###1.JPA是什么?以及相关概述 JPA的是 Java Persistence API 的简写,是Sun官方提出的一种ORM规范! Sun提出此规范有2个原因: 1.简化现有Java EE和Java SE应用开发工作。 2.Sun希望整合ORM技术,实现天下归一。 重点在于,JPA是一套规范,而不是具体的ORM框架。 故Hibernate、TopLink 等ORM框架 都是JPA的实现,其中Hibernate已获得Sun的兼容认证。 JPA的标准的定制是hibernate作者参与定制的,所以JPA是Hibernate的一个总成。 优势在于: 1.开发者面向JPA规范的接口,但底层的JPA实现可以任意切换:觉得Hibernate好的,可以选择Hibernate JPA实现;觉得TopLink好的,可以选择TopLink JPA实现。 2.这样开发者可以避免为使用Hibernate学习一套ORM框架,为使用TopLink又要再学习一套ORM框架。 在项目中使用方式为:在实体类中,使用 @Entity 、 @Table 、 @Id 与 @Column 等注解。 示例代码如下: import javax.persistence.*; import javax.persistence.Id; @Entity @Table(name = "t_user")//数据库中表名 public

Java 打怪升级路线图,大佬是这样炼成的!一定要收藏

会有一股神秘感。 提交于 2020-05-01 13:36:06
技术日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。 网上的资料多如牛毛,但是很多时候我们缺的不是一个资料,而是一个学习规划! 就是说,做 Java 开发,我们应该从哪里开始学?应该学习哪些东西?应该按照什么样的顺序来学? 松哥大二刚开始自学 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,自己一个人摸索了很长时间,后来才逐步建立起自己的知识体系。 所以每次有小伙伴问我 Java 的学习规划时,我都能理解大家所处的困境。 Java 开发涉及到的领域非常多,对于开发者而言要掌握的东西也非常多,初入行的小伙伴甚至觉得这些要掌握的东西非常杂乱,其实不然!所有要学习的东西都是有内在关联的。 松哥今天就来和大家捋一捋 Java 学习路线图,一起来看看都有哪些东西需要掌握,以及要按照什么样的顺序来学习。 1. 整体规划 Java 企业级开发涉及到的技能点实际上非常多,我将其大致归为以下五类(文末可以获取思维导图): 在这个技术栈的基础上,你可以继续选择走全栈道路或者走大数据方向。 有的小伙伴可能会纠结于要全面还是要精通某一方面,其实这个无所谓好坏,关键是要看你自己。你是想去大厂做一个某一领域的技术专家,还是想自己独当一面,自己喜欢的才是最好的。 话说回来,即使你想钻研某一方面,也不是说这些东西就不用学了,即使精通某一方面,也必然是先广泛涉猎

idea springboot spring-data-jpa jsp

爱⌒轻易说出口 提交于 2020-05-01 09:51:18
idea搭建spring boot,持久层为spring-data-jpa, 一。创建maven项目,完善 完善项目,如下图: 二.反向生成entity 1.配置数据库 菜单栏: view——tool window——database idea右边栏出现database,点击+,,,database,,,,mysql idea第一次搞这个,需要下载mysq连接jar包,,,如下图(图中已经下载过) 接着点击下图中1,填写图中2,点击图中3测试是否连接成功,成功搞图中4,ok 2.持久化操作 点击new-project,如下图圈圈操作 下步填写项目名,finish————new window,ok 3.生成实体类 菜单栏: view——tool window——persistence,出现如下图: 右键项目名,generator persistence mapping——by database schema,出现如下图,填写后如下: 黄圈1:左边为:数据库连接,生成实体类在项目中的放置位置 右边为:生成实体类的前缀和后缀 黄圈2:数据库表 黄圈3:生成带注解的实体类 点击ok,等待生成。 可能会报错:如下图: 解决: 把 createTime的类型 java.lang.Object 改为 java.util.Date,回车, 都改完后,点击ok,成功后如下图: 修改实体类的一些地方

Java8新特性——Optional

烈酒焚心 提交于 2020-05-01 03:42:03
前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现。Java8引入了Optional类,为的就是优雅地处理判空等问题。现在也有很多类库在使用Optional封装返回值,比如Spring Data JPA等。下面,我们就来了解下Optional的常用用法 原创声明 本文发布于掘金号【Happyjava】。Happy的掘金地址: https://juejin.im/user/5cc2895df265da03a630ddca ,Happy的个人博客:( http://blog.happyjava.cn )[ http://blog.happyjava.cn ]。欢迎转载,但须保留此段声明。 Optional方法列表 Optional的方法列表如下: 初始化 初始化一个Optional有三种方式,如下: // 创建一个空的optional Optional<Object> empty = Optional.empty(); // 此方式不可为null Optional<String> optional = Optional.of("Happyjava"); // 此方式可以为null Optional<Object> optional1 = Optional.ofNullable(null); 这里需要注意一点,Optional.of初始化一个Optional

SpringBoot 常用注解

耗尽温柔 提交于 2020-04-30 22:06:08
@SpringBootApplication 这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 @EnableAutoConfiguration Spring Boot自动配置(auto-configuration),可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。 如果发现应用了你不想要的特定自动配置类,可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。 @Configuration 相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类,可以使用@ImportResource注解加载xml配置文件。 @ComponentScan @ComponentScan 注解对应XML配置形式中的 <context:component-scan> 元素,表示启用组件扫描,Spring 会自动扫描所有通过注解配置的 bean,然后将其注册到 IOC 容器中。 可以通过 basePackages 等属性来指定 @ComponentScan 自动扫描的范围,如果不指定,默认从声明

Spring Data JPA(三)——SpringBoot对Spring Data JPA的支持

半世苍凉 提交于 2020-04-29 14:33:54
一、JDBC的自动配置 spring-boot-starter-data-jpa依赖于spring-boot-starter-jdbc,而SpringBoot对JDBC做了一些自动配置。源码放置在org.springframework.boot.autoconfigure.jdbc下,如图所示: 大概看一下源码,就能看到是通过“spring.datasource”为前缀的属性自动配置dataSource; SpringBoot自动开启了注解事务的支持(@EnableTransactionManagement);还配置了一个jdbcTemplate。 SpringBoot还提供了一个初始化数据的功能:放置在类路劲下的schema.sql文件会自动用来初始化表结构;放置在类路径下的data.sql文件会自动用来填充表数据。 二、对JPA的自动配置 SpringBoot对JPA的自动配置放在org.springframework.boot.autoconfigure.orm.jpa下,Spring Boot 1.x和2.x有所差别,但大致逻辑是一样的。 1.x版本 : 2.x版本 : 2.x与1.x版本有以下区别: @Configuration注解增加了属性: proxyBeanMethods = false @ConditionalOnClass注解增加了一个元素:

实例对比 hibernate, spring data jpa, mybatis 选型参考

被刻印的时光 ゝ 提交于 2020-04-24 17:45:18
原文: 最近重构以前写的服务,最大的一个变动是将mybatis切换为spring data jpa,切换的原因很简单,有两点:第一、它是spring的子项目能够和spring boot很好的融合,没有xml文件(关于这一点hibernate似乎也很符合);第二、简单优雅,比如不需要写SQL、对分页有自动化的支持等等,基于以上两点开始了重构之路。在这之前了解了一下hibernate、mybatis和spring data jpa的区别,在这里也简单的记录一下:Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行;Mybatis则在于POJO 与SQL之间的映射关系,通过ResultMap对SQL的结果集进行映射;Spring Data jpa是一个用于简化数据库访问,并支持云服务的开源框架,容易上手,通过命名规范、注解查询简化查询操作。这三者都是ORM框架,但是mybatis可能并没有那么典型,原因就是mybatis映射的是SQL的结果集,另外hibernate和spring data jpa都是jpa(Java Persistence API,是从JDK5开始提供的,用来描述对象 <--> 关系表映射关系,并持久化的标准)的一种实现,从这一点上将这两者是一种并列的关系,spring data

klg-jpa:spring-data-jpa 最佳实践

柔情痞子 提交于 2020-04-24 17:45:07
klg-jpa:spring-data-jpa 最佳实践 项目介绍 码云地址: https://gitee.com/klguang/klg-jpa JPA是sun为POJO持久化制定的标准规范,用来操作实体对象,执行CRUD操作,让开发者从繁琐的JDBC和SQL代码中解脱出来。 但是JPA有以下两个缺陷: 1. 臃肿的 动态条件查询 2.众所周知,复杂查询(联接表查询)的效率低 spring-data-jpa和mybatis可以整合在一起使用有什么优缺点 ,这个问答种了解到 spring-data-jpa-extra 这个库,让我们可用更方便的写sql查询。 klg-jpa, spring-data-jpa 最佳实践,用起来就像开了挂,更多例子 klg-j2ee-dataacess-demo 演示 单表查询最佳实践 1. find by attribute是一种较灵活的方式,需要用到jpa生成的metamodel,在快速开发的利器 BaseRepository api: //-------------find by attribute------------------------ public Page<T> findPage(Pageable pageable,AttrExpression...exprs); public List<T> findList(Sort sort