IDEA 中创建Spring Data Jpa 项目的示例代码

一、IDEA 创建工程

使用IDEA 创建工程的过程,使用文字做简单描述。

  • 选择工程类别【Spring Initializr】。
  • 设置工程的元数据【Metadata】,根据自己的情况填写即可。
  • 设置工程的依赖;在【Web】中选择“Spring Web”;在【SQL】中选中“Spring Data JPA”、“Spring Data JDBC”、“MySQL Driver”、“JDBC API”。选中的可能有些多,如果多了自己删除掉。

做完最后一步,工程就创建完成了。

PS:在配置 IEAD 中的 Maven 功能时,将“Always update snapshots” 选中,这样就会及时更新测试包,并且不缓存Maven 的错误信息。

1.1、Pom 文件中的依赖信息

<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-jpa</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-jdbc</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</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-test</artifactId>
 <scope>test</scope>
 </dependency>
</dependencies>

二、编辑配置文件

在 resources 目录中创建配置文件:application.yml;添加数据源等信息。

spring:
 datasource:
 url: jdbc:mysql://dbserver.com:3306/user?useUnicode=true&characterEncoding=utf-8
 username: username
 password: password
 driver-class-name: com.mysql.cj.jdbc.Driver

server:
 port: 8080
 compression:
 enabled: true
 servlet:
 context-path: /

三、编写实体类

创建User的实体类 Entity/User.java(省略了getter&setter方法;如果不写的话,会对数据操作失败)。

/**
 * 使用JPA注解配置映射关系
 */
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "tbl_user") //@Table来指定和哪个数据表对应;如果省略,默认表名就是该类名的小写:user
public class User {
 @Id //表示这个属性是数据表中的主键
 @GeneratedValue(strategy = GenerationType.IDENTITY) //还是一个自增的主键
 private Integer id;
 @Column(name = "last_name",length = 50) //这是和数据表对应的一个列,可以定义其在数据表中的名字及长度
 private String lastName;
 @Column //省略的情况,默认列名就是属性名
 private String email;
}

使用JPA的一个好处就是,它能够根据实体类自动创建数据库表,只需简单配置几步即可:

在application.yml文件中增加(jpa 也是spring下的一个属性,所以它也是在spring这个层级下的):

jpa:
 hibernate:
 ddl-auto: update #定义数据表的生成策略。update:更新或者创建数据表结构
 show-sql: true #控制台显示sql语句

运行主程序,控制台会报错找不到对应的表,但是这实际上是正常的,去数据库看就可以发现名为tbl_user的表已经创建成功了,而且是根据实体类中的设置创建的。

四、持久层接口

JPA中有许多封装好的对数据库进行操作的方法,不需要我们再写sql语句,而是直接调用其中的方法,就可以完成对数据的操作了。而这时,持久层只需继承JpaRepository类就可以了。

/**
 * Dao/UserRepository.java
 * 继承JpaRepository来完成对数据库的操作
 * JpaRepository<T,id>,T表示要进行操作的实体类,id表示类的主键的类型
 */
public interface UserRepository extends JpaRepository<User,Integer> {
}

五、控制层

编写控制层代码来测试一下是否成功。因为没有界面,所以这边直接用@RestController注解来返回json串就好了,把持久层接口自动注入进来,直接调用其中对应的方法。

@RestController
@EnableAutoConfiguration
public class UserController {
 @Autowired
 UserRepository userRepository;

 @GetMapping("/user/{id}")
 public User getUser(@PathVariable("id") Integer id) {
 Optional<User> optional = userRepository.findById(id);
 if (optional.isPresent()) {
 User user = optional.get();
 return user;
 } else {
 return new User();
 }
 }

 @GetMapping("/user")
 public User insertUser(User user) {
 User save = userRepository.save(user);
 return save;
 }
}

六、测试

1.首先插入一条数据:

地址栏输入 :http://localhost:8080/user?lastName=zhangsan&email=aa

2、查询:

地址栏输入 :http://localhost:8080/user/1

到此这篇关于IDEA 中创建Spring Data Jpa 项目的示例代码的文章就介绍到这了,更多相关IDEA 创建Spring Data Jpa 项目内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-04-21

详解Spring Data JPA系列之投影(Projection)的用法

本文介绍了Spring Data JPA系列之投影(Projection)的用法,分享给大家 在JPA的查询中,有一个不方便的地方,@Query注解,如果查询直接是 Select C from Customer c ,这时候,查询的返回对象就是Customer这个完整的对象,包含所有字段,对于我们的示例并没有什么问题,但是对于比较庞大的domain类,这个查询时就比较要命,并不是所有的字段都能用到,比较头疼.另外,如果定义 select c.firstName as firstName,c.la

Spring Data JPA使用Sort进行排序(Using Sort)

通过上一节的学习,我们知道了如何用@Query注解来实现灵活的查询.在上一节的示例中,我也尝试给出简单的排序,通过JPQL语句以及原生SQL来实现的.这样的实现,虽然在一定程度上可以应用,但是灵活度不够,因此结合@Query注解,我们可以使用Sort来对结果进行排序. 1.在CustomerRepository内添加方法 /** * 一个参数,匹配两个字段 * @param name2 * @param sort 指定排序的参数,可以根据需要进行调整 * @return * 这里Param的值和

SpringBoot Data JPA 关联表查询的方法

SpringBoot Data JPA实现 一对多.多对一关联表查询 开发环境 IDEA 2017.1 Java1.8 SpringBoot 2.0 MySQL 5.X 功能需求 通过关联关系查询商店Store中所有的商品Shop,商店对商品一对多,商品对商店多对一,外键 store_id存在于多的一方.使用数据库的内连接语句. 表结构 tb_shop tb_store 实体类,通过注解实现 1.商店类Store.java package com.gaolei.Entity; import ja

Spring Data JPA实现分页Pageable的实例代码

在JPA中提供了很方便的分页功能,那就是Pageable(org.springframework.data.domain.Pageable)以及它的实现类PageRequest(org.springframework.data.domain.PageRequest),详细的可以见示例代码. 1.改变CustomerRepository方法​ /** * 一个参数,匹配两个字段 * @param name2 * @Param pageable 分页参数 * @return * 这里Param的值和

详解Spring Data JPA使用@Query注解(Using @Query)

经过几天的折腾,终于到了学习一个重量级的查询方式上,使用@Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言,略有区别,后者我们更熟悉一些.话不多说,看代码. 1.在CustomerRepository里添加 /** * 模糊匹配 * @param bauer * @return */ @Query("select c from Customer c where c.firstName=?1") Customer findByFirstName2

Spring MVC结合Spring Data JPA实现按条件查询和分页

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 推荐视频:尚硅谷Spring Data JPA视频教程,一学就会,百度一下就有. 后台代码:在DAO层继承Spring Data JPA的PagingAndSortingRepository接口实现的 (实现方法主要在SbglServiceImpl.java类中) 前台表现:用kkpaper表现出来 实现效果: 1.实体类 package com.jinhetech.yogurt.sbgl.entity; im

Spring Data JPA实现动态条件与范围查询实例代码

Spring Data JPA为我们提供了Query With Example来实现动态条件查询,当查询条件为空的时候,我们不用做大量的条件判断.但是Query With Example却不支持范围查询(包括日期范围,数值范围查询),本文通过Specification实现了既支持动态条件查询又支持范围查询的方法. 1 实现方式 1.1 范围对象Range定义 import java.io.Serializable; public class Range<E> implements Serial

Spring Data JPA 实现多表关联查询的示例代码

多表查询在spring data jpa中有两种实现方式,第一种是利用hibernate的级联查询来实现,第二种是创建一个结果集的接口来接收连表查询后的结果,这里介绍第二种方式. 一.一对一映射 实体 UserInfo :用户. 实体 Address:家庭住址. 这里通过外键的方式(一个实体通过外键关联到另一个实体的主键)来实现一对一关联. 实体类 1.实体类 UserInfo.java package com.johnfnash.learn.domain; import java.io.Ser

Spring Data Jpa 自动生成表结构的方法示例

想在部署的时候随应用的启动而初始化数据脚本,这不就是Spring Data Jpa中的自动生成表结构,听起来特别简单,不就是配置Hibernate的ddl-auto嘛,有什么好说的,是个人都知道.当初我也是这样认为,实际操作了一把,虽然表是创建成功了,但是字段注释,字符集以及数据库引擎都不对,没想到在这些细节上翻车了. 毕竟开翻的车还要自己扶起来,于是在这记录一下. 注:本文中使用的Spring Data Jpa版本为2.1.4.RELEASE 以MySQL为例,我这边举个例子: import

Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例

本博客介绍基于Spring Data这款orm框架加上 Jquery.pagination插件实现的分页功能. 本博客是基于一款正在开发中的github开源项目的,项目代码地址:https://github.com/u014427391/jeeplatform 欢迎star(收藏)或者可以下载去学习,还在开发- 介绍一下Spring Data框架 spring Data : Spring 的一个子项目.用于简化数据库访问,支持NoSQL 和 关系数据存储. 下面给出SpringData 项目所支

Spring Data Jpa的四种查询方式详解

这篇文章主要介绍了Spring Data Jpa的四种查询方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.调用接口的方式 1.基本介绍 通过调用接口里的方法查询,需要我们自定义的接口继承Spring Data Jpa规定的接口 public interface UserDao extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> 使用这

Spring Data Jpa Mysql使用utf8mb4编码的示例代码

1 问题:数据库字符集和排序规则不一致 最近需要向一个已有的数据库进行扩充(已有数据库是由PHP建的,后来由Java进行扩展),但是出现了新表和旧表无法建立外键的问题,后来发现是因为编码问题,服务器数据库和我本地数据库的字符集和排序规则不对应,服务器数据库使用的是utf8mb4,utf8mb4_unicode_ci而我本地使用的是utf8,utf8_general_ci. 2 解决方法 2.1 将本地数据库改成utf8mb4,utf8mb4_unicode_ci 该方法参考: 更改MySQL数据

spring data jpa分页查询示例代码

最近项目上用就hibernate+spring data jpa,一开始感觉还不错,但是随着对业务的复杂,要求处理一些复杂的sql,就顺便研究了下,把结果记录下,以便日后查看.用到Specification,需要继承JpaSpecificationExecutor接口.(下面代码有的分页从0开始作为第一页,有的从1开始作为作为第一页,我也忘记,请自己测试) DAO层: import java.util.List; import org.springframework.data.domain.Pa

Spring Data JPA实现动态查询的两种方法

前言 一般在写业务接口的过程中,很有可能需要实现可以动态组合各种查询条件的接口.如果我们根据一种查询条件组合一个方法的做法来写,那么将会有大量方法存在,繁琐,维护起来相当困难.想要实现动态查询,其实就是要实现拼接SQL语句.无论实现如何复杂,基本都是包括select的字段,from或者join的表,where或者having的条件.在Spring Data JPA有两种方法可以实现查询条件的动态查询,两种方法都用到了Criteria API. Criteria API 这套API可用于构建对数据

SpringBoot JPA 表关联查询实例

今天给大家介绍一下如何利用JPA实现表关联查询. 今天给大家举一个一对多的关联查询,并且是使用JPA原生的findBy语句实现的. 例子中总共有两个实体类,一个是Floor(商品楼层类),另一个是FloorContent(商品楼层内容表).下面看两张表的源代码: Floor类: package cms.model; import cms.model.base.BaseDomain; import org.hibernate.annotations.GenericGenerator; import

Spring Data JPA 简单查询--方法定义规则(详解)

一.常用规则速查 1 And 并且 2 Or   或 3 Is,Equals 等于 4 Between   两者之间 5 LessThan 小于 6 LessThanEqual   小于等于 7 GreaterThan 大于 8 GreaterThanEqual   大于等于 9 After 之后(时间) > 10 Before 之前(时间) < 11 IsNull 等于Null 12 IsNotNull,NotNull 不等于Null 13 Like 模糊查询.查询件中需要自己加 % 14