SpringBoot整合JPA

添加依赖

<dependencies><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

实体类

package cn.clboy.springbootjpa.entity;import javax.persistence.*;@Entity //使用JPA注解配置映射关系,告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "tbl_user")   //@Table来指定和哪个数据表对应;如果省略默认表名类名小写;
public class User {@Id //这是一个主键@GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键private Integer id;@Column(name = "last_name",length = 50) //这是和数据表对应的一个列private String lastName;@Column //省略默认列名就是属性名private String email;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}

DAO

package cn.clboy.springbootjpa.repository;import cn.clboy.springbootjpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;/*** 继承JpaRepository来完成对数据库的操作* 泛型是(实体类,主键)*/
public interface UserRepository extends JpaRepository<User, Integer> {}

配置文件

spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.DriverinitialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wallmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

添加用户

  • http://localhost:8080/user?lastName=zhangsan&email=123456@qq.com
  • http://localhost:8080/user?lastName=lisi&email=78215646@qq.com
  • http://localhost:8080/user/1,抛出500错误,原因是getOne方法使用的懒加载,获取到的只是代理对象,转换为json时会报错

解决懒加载

  1. 关闭懒加载,在实体类上加上@Proxy(lazy = false)注解
    @Entity
    @Table(name = "tbl_user")
    @Proxy(lazy = false)
    public class User
    
  2. 转Json的时候忽略hibernateLazyInitializer和handler属性
    @Entity
    @Table(name = "tbl_user")
    @JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"})
    public class User 

 

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

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

相关文章

为什么说选择正确的编程语言很重要,以及如何正确的选择

几个月前&#xff0c;一个同事问我&#xff0c;应该如何选择编程语言&#xff0c;或者有没有什么固定的选择模式&#xff0c;当时我便打算写点什么。上周在硅谷开会&#xff0c;这我是第一次跟“hack3rs”的创业狂以及技术狂们打交道。我学会了很多前所未闻的脏话&#xff0c;也…

细数开源历史上的十个重大事件

开放源码&#xff08;开源&#xff09;的精神在于使用者可以使用、复制、散布、研究和改进软件。这可以追溯到20世纪60年代&#xff0c;至今已有半个世纪了。虽然下面所列举的不都是专门的开源产品&#xff0c;但还是在开源发展的进程中有着巨大的影响。开放源码&#xff08;开…

科研必备学士搜索引擎推荐

综合性学术搜索引擎 中国知网万方数据百度学术谷歌学术谷歌学术镜像Web of ScienceEiVillage2EIsevier电子期刊SpringerSemanticScholar 图片文献检索方法 CNKI 期刊查询 DOAJSocolarOpenDOAROALIB开放存取图书馆 硕博论文搜索下载 上海交大镜像网站欧洲学位论文库 国外电子…

如何写一篇论文

文献综述的地位 体现了学术研究的继承性 文献综述的写作是由学术研究的继承性决定的&#xff0c;因为继承是创新的基础和前提。文献综述部分要澄清所研究问题“从哪里来&#xff0c;到哪里去” 。这部分主要是继承&#xff0c;是梳理前人的成果并找出其内在的逻辑关系和演进的规…

深度卷积神经网络CNNs的多GPU并行框架及其应用

摘要&#xff1a;本文是腾讯深度学习系列文章之一&#xff0c;主要聚焦于腾讯深度学习平台&#xff08;Tencent Deep Learning Platform&#xff09;中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框架。 【编者按】深度卷积神经网络有着广泛的应用场景&#xff0c;本…

如果误删谷歌浏览器的书签,怎么恢复

如果是Mac用户&#xff0c;command和z一直恢复就可以 同理&#xff0c;windows用户&#xff0c;也可以使用撤销键&#xff0c;ctrlz即可

55分钟学会正则表达式

正则表达式是一种查找以及字符串替换操作。正则表达式在文本编辑器中广泛使用&#xff0c;比如正则表达式被用于&#xff1a; 检查文本中是否含有指定的特征词找出文中匹配特征词的位置从文本中提取信息&#xff0c;比如&#xff1a;字符串的子串修改文本 与文本编辑器相似&a…

线程安全和对应的核心概念

线程安全 线程安全的概念&#xff1a;当多个线程访问某一个类&#xff08;对象和方法&#xff09;时&#xff0c;这个类始终都能表现出正确的行为&#xff0c;那么这个类&#xff08;对象或者方法&#xff09;就是线程安全的synchronized&#xff1a;可以在任意对象及方法上加…

JDK Unsafe类的使用与CAS原子特性

JDK Unsafe类的使用与CAS原子特性 Java.util.concurrent.atomic包&#xff0c;其中包含了大量使用到Unsafe这个类Java不能直接访问操作系统的底层&#xff0c;而是通过本地方法来访问。 Unsafe类提供了硬件级别的原子操作&#xff0c;主要提供了以下功能 内存操作字段的定位和…

写软件不是造汽车

写软件和做其他事情是不一样的。当我们制造别的东西的时候——像汽车、玩具、椅子、画作、甚至包括数字产品如平面图片和3D模型——我们做出来的成品就是最终的结果。而开发软件则不是&#xff0c;我们做出来的产品永远不可能有最终的结果——我们需要向计算机解释如何根据任意…

线程池核心概述

线程池核心概述 Executors工厂类使用 Executors工厂类底层源码分析详解 ThreadPoolExecutor自定义线程池 ThreadPoolExecutor拒绝策略详解 计算机密集型与IO密集型详解 如何正确的使用线程池…

网站盈利的10种方式

如果你有自己的网站&#xff0c;而且已经有了不少的流量&#xff0c;你肯定会开始考虑如何通过这个网站来挣一些钱。 在这篇文章中&#xff0c;我会向大家介绍网站最常见的10种盈利方式。 1.按点击付费广告 在网站上展示一个按点击付费的广告横幅是最简单的盈利方式&#xff…

程序员如何创业?

摘要&#xff1a;工作机会减少&#xff0c;读大学也不是保障。大公司亦不再是构筑职业生涯的安全港湾。透过媒体的镜头&#xff0c;创业似乎成了沙漠中唯一的绿洲。然而关于创业&#xff0c;或许少有人给你建议&#xff0c;这里所列出的一些因素都是你可以考虑的。 如果你的年…

Redis数据的类型

Redis一共分为五种基本数据类型&#xff1a;String、Hash、List、Set、Zset. string 内部编码有三种&#xff0c;raw&#xff0c;embstr&#xff0c;int String 是二进制的。可以存储序列化对象&#xff0c;图片&#xff0c;字符串&#xff0c;数值等 set和get方法 &#x…

Redis高级命令与特性以及单点模式的介绍

高级命令 keys * 返回满足条件的所有key&#xff0c;可以模糊匹配exists 是否存在指定的keypersist 取消过期时间select 选择数据库 &#xff08;0-15&#xff0c;总共16个数据库&#xff09;move key index 将当前数据库的 key 移动到给定的数据库 db 当中randomkey 随机返回…

华为副总裁徐家骏离职:年薪千万工作感悟十二条

从普通的公司职员&#xff0c;到年薪千万的华为副总裁&#xff0c;再到离开华为转战百度&#xff0c;徐家骏的十年从业经历和经验可资借鉴&#xff0c;我们从中也可以一窥华为的运作过程。徐家骏是华为数据中心的头&#xff0c;技术超级牛人&#xff0c;一级部门总监&#xff0…

Redis持久化之RDB和AOF

Redis持久化之RDB和AOF Redis 有两种持久化方案&#xff0c;RDB &#xff08;Redis DataBase&#xff09;和 AOF &#xff08;Append Only File&#xff09;&#xff1b; RDB 详解 RDB 是 Redis 默认的持久化方案。在指定的时间间隔内&#xff0c;执行指定次数的写操作&#…

同为程序员 为什么我的工资最低

我看着工资单上每一个开发团队成员的薪水&#xff0c;慢慢地我不能保持淡定了。 而当我看到我的工资排名是倒数的时候——靠近最后一名——我不由得倒抽一口冷气。就像圣诞故事中的那个可爱的小男孩Ralphie &#xff0c;想买气枪却被忽悠会有危险一样&#xff0c;我也不断忽悠…

Docker安装Redis以及配置Redis环境

1&#xff0c;下载Redis镜像 首先拉取 Redis 镜像, 这里我选择的是 redis:alpine 轻量级镜像版本 docker pull redis:alpine 下载完成后&#xff0c;通过 docker images 查看我们已经下载的镜像&#xff0c;看看是否已经下载到本地 2&#xff0c;运行 Redis 容器 docker run …

.NET程序性能的基本要领

摘要&#xff1a;本文分享了性能优化的一些建议和思考&#xff0c;比如不要过早优化、好工具很重要、性能的关键&#xff0c;在于内存分配等。开发者不要盲目的没有根据的优化&#xff0c;首先定位和查找到造成产生性能问题的原因点最重要。 【编者按】Bill Chiles&#xff08…