Spring Data JPA

解决springdatajpa 在解析实体类的Cloumn的时候驼峰自动转为下划线问题

六眼飞鱼酱① 提交于 2020-04-23 22:15:23
今天开发中突然碰到jap对驼峰命名的字段无法转化为带下划线的字段,造成SQL语句不对。 解决办法: 去掉 hibernate : naming : physical-strategy : org . hibernate . boot . model . naming . PhysicalNamingStrategyStandardImpl 可以参考: 学习Spring-Data-Jpa(四)---Naming命名策略,源码跟踪 来源: oschina 链接: https://my.oschina.net/u/3358860/blog/3472632

SpringBoot Jpa入门案例

你离开我真会死。 提交于 2020-04-22 03:30:11
我们先来了解一下是什么是 springboot jpa , springboot jpa 的入门又是怎么样的呢? 1 . springboot jpa 是sun公司提供的持久化规范,为java开发人员提供了一种对象/关联映射工具来 管理java应用中的关系数据。它主要表现是为了简化现有的持久化开发工作和整合 ORM 技术,结 habernate 、 toplink 、 JDO 等 ORM 框架各自为营的局面。 2 . Spring Boot Jpa 是 Spring 基于 ORM 框架、 Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data Jpa 可以极大提高开发效率! Spring Boot Jpa 让我们解脱了 DAO 层的操作,基本上所有 CRUD 都可以依赖于它来实现 注意:Jpa 是一套规范,不是一套产品,那么像 Hibernate,TopLink,JDO 他们是一套产品,如果说这些产品实现了这个 Jpa 规范,那么我们就可以叫他们为 Jpa 的实现产品。 3 .了解一下 Spring Data jpa SpringData为我们提供使用统的API来对数据访问层进行操作;这主要是Spring Data Commons项目来实现的

on duplicate key update 的用法说明(解决批量操作数据,有就更新,没有就新增)mybatis批量操作数据更新和添加

早过忘川 提交于 2020-04-12 13:32:50
项目用的ORM框架是用springdatajpa来做的,有些批量数据操作的话,用这个效率太低,所以用mybatis自己写sql优化一下。 一般情况,我们肯定是先查询,有就修改,没有就添加,这样的话,单个操作还好,如果是大量数据的话,每次都需要先查后改(如果用springdatajpa的话,添加之前还得查一遍),太消耗资源了。 那么mysql有没有解决的办法呢?当然是有的,我查了一些资料,有两种办法,一种是使用使用replace into ,还有一种是on duplicate key update来解决,我先来演示一下这两种办法的区别。 首先创建一个表(我设置的username列唯一,用户名不可重复) CREATE TABLE user_table( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR( 10 ) UNIQUE KEY, address VARCHAR( 10 ) ) 添加一条数据 INSERT INTO user_table (id,username,address) VALUE (NULL,'胡俊杰','北京') 目的:先查询数据是否存在,再修改(用一条语句实现),胡俊杰不在北京了,跑去黑龙江了 REPLACE INTO user_table(id,username,address) VALUE (NULL,

Spring Data JPA 常见异常

混江龙づ霸主 提交于 2020-04-09 20:11:59
异常一: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: This class [class com.xxx.xxx.xxx.xxxxx] does not define an IdClass 原因:由于你在你的实体中增加了多个@Id注解 异常二: Could not instantiate resultclass: java.lang.Long; nested exception is org.hibernate.HibernateException: Could not instantiate resultclass: java.lang.Long] with root causeorg.hibernate.HibernateException: Could not instantiate resultclass: java.lang.Long 原因:因为你使用了setResultTransformer session

spring data jpa 关于 List<Map>接收出现indexOut解决

懵懂的女人 提交于 2020-04-09 18:09:52
初始化过程: springboot自动找到继承了repository的类,为他们进行实例化。 spring data jpa 提供了 SimpleJpaRespositry : 实现所有默认的Repository接口,中默认的操作,如findAll,delete等 JpaRepositoryFactoryBean: FactoryBean,顾名思义,就是将repository中的bean进行装配,然后以继承repository类的类名作为key,放入 DeafultListableBeanFactory中,在我们需要的时候,从这个bean中去对应的代理进行注入。 JdkDynamicAopProxy: 动态代理的处理类,每一个方法都会经过这个拦截,然后进行处理 附上一张时序图: 图片来源:( http://www.luckyzz.com/java/spring-data-jpa/ ) DEBUG流程解决: 重点在于 RepositoryFactorySupport 中对我们的repository方法进行了拦截处理,执行excute方法,execute方法有两个实现类,KeyValuePartTreeQuery(用于常用的是实体query,如findAllByName)与AbstractJpaQuery(用于带有@Query注解),这边我们重点了解AbstractJpaQuery

spring boot jap+mybatis druid 多数据源配置

邮差的信 提交于 2020-04-06 06:38:20
spring boot jap+mybatis druid 多数据源配置 , 其实并不难的, 关键不能乱来,否则 配置 好了之后,可能 druid 数据源 的连接也可能爆某些莫名诡异的错误,比如连接 超时啊,连接不可用啊等等。 多数据源配置不好的话,很容易 出问题和BUG。 会把人搞疯了。 The last packet successfully received from the server was 1,843,135 milliseconds ago. The last packet sent successfully to the server was 18,904 milliseconds ago. 2020-03-31 14:04:50 [http-nio-9180-exec-2] ERROR c.n.m.handler.GlobalExceptionHandler - 请求:http://localhost:9180/auth/report/employee/performance?ifContainSub=%20true&brandId=%200&orgId=%201&page=%201&pageSize=%2010&c_token=ab2ebb088e874167ba1f3e3cdc2392f5&c_user_id=28&c_session

ZhaoWei-2020-01-28

做~自己de王妃 提交于 2020-02-26 23:37:45
spring data jpa介绍 首先了解JPA是什么? JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。 注意:JPA是一套规范,不是一套产品,那么像Hibernate,TopLink,JDO他们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以叫他们为JPA的实现产品。 spring data jpa Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率! SpringData Jpa 极大简化了数据库访问层代码。 如何简化的呢?

spring data jpa多对多关系报 detached entity passed to persist错误

二次信任 提交于 2020-02-26 02:08:49
最近使用spring data jpa维护表和表的多对多关系时,出现了一个奇怪的问题。当将一个new出来的对象放到实体类维护多对多关系的set中,然后使用jpa进行保存时,会出现如下异常。 org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.infiai.webmessenger.dao.ProductTag; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: com.infiai.webmessenger.dao.ProductTag at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:299) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244

JPA相关

无人久伴 提交于 2020-02-25 21:27:50
全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中 JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。 Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现 注解 含义 参数 @Entity 声明类为实体或表。 @Table 数据库对应的表 name表明;indexs{@index索引,name索引名称,unique唯一索引,columnList索引列名} @EntityListeners 用于指定Entity或者superclass上的回调监听类 AuditingEntityListener.class用于捕获监听信息,当Entity发生持久化和更新操作时 @Column 列注解 length 长度 @Type hibernate中的type type项目中自己实现的enum类名,所有的enum类都必须继承 @CreatedBy 创建者 @CreatedByDate 创建时间 @LastModifiedBy 最后修改人 @LastModifiedDate 最后修改时间 @OneToMany 一对多

Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL

筅森魡賤 提交于 2020-02-25 19:47:28
在数据访问这章的第一篇文章 《Spring中使用JdbcTemplate访问数据库》 中,我们已经介绍了如何使用Spring Boot中最基本的jdbc模块来实现关系型数据库的数据读写操作。那么结合Web开发一章的内容,我们就可以利用JDBC模块与Web模块的功能,综合着使用来完成一个适用于很多简单应用场景的后端应用了。 然而当我们有一定的开发经验之后,不难发现,在实际开发过程中,对数据库的操作大多可以归结为:“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句几乎都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑。 为了解决这些大量枯燥的数据操作语句,诞生了非常多的优秀框架,比如:Hibernate。通过整合Hibernate,我们能够以操作Java实体的方式来完成对数据的操作,通过框架的帮助,对Java实体的变更最终将自动地映射到数据库表中。 在Hibernate的帮助下,Java实体映射到数据库表数据完成之后,再进一步解决抽象各个Java实体基本的“增删改查”操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这样依然不是很方便,我们需要针对每个实体编写一个继承自泛型模板Dao的接口,再编写该接口的实现。虽然一些基础的数据访问已经可以得到很好的复用,但是在代码结构上针对每个实体都会有一堆Dao的接口和实现。 由于模板Dao的实现