广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何快速搞定Jpa
  • 129
分享到

如何快速搞定Jpa

2024-04-02 19:04:59 129人浏览 薄情痞子
摘要

本篇内容主要讲解“如何快速搞定Jpa”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何快速搞定Jpa”吧!数据准备数据库使用的数据表设计如下建表语句如下SET&

本篇内容主要讲解“如何快速搞定Jpa”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何快速搞定Jpa”吧!

数据准备

数据库使用的数据表设计如下

如何快速搞定Jpa

建表语句如下

SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;  -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `user_name` varchar(255) DEFAULT NULL,   `passWord` varchar(255) DEFAULT NULL,   `last_login_time` datetime DEFAULT NULL,   `sex` tinyint(4) DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8;  -- ---------------------------- -- Records of t_user -- ---------------------------- BEGIN; INSERT INTO `t_user` VALUES (1, 'JSON', '123', '2019-07-27 16:01:21', 1); INSERT INTO `t_user` VALUES (2, 'jack jo', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (3, 'manistal', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (4, 'landengdeng', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (5, 'max', '123', '2019-07-24 16:01:37', 1); COMMIT;  SET FOREIGN_KEY_CHECKS = 1;

新建 Spring Boot 工程

选择 File -> New -> Project 选择 spring Initializr,选择 next  填写包名,项目名,选择下一步。选择依赖,Spring WEB starter 前面打钩,sql 选项为 Spring Data Jpa,Mysql  项目名任意

引入 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-webflux</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>         <dependency>             <groupId>io.projectReactor</groupId>             <artifactId>reactor-test</artifactId>             <scope>test</scope>         </dependency>     </dependencies>

编写配置文件 application.yml

server:   port: 8086 spring:   #通用的数据源配置   datasource:     driverClassName: com.mysql.jdbc.Driver     url: jdbc:mysql://localhost:3306/demo_test?useSSL=false&useUnicode=true&characterEncoding=utf8     username: root     password: 123   jpa:     #这个参数是在建表的时候,将默认的存储引擎切换为 InnoDB 用的     database-platfORM: org.hibernate.dialect.MySQL5InnoDBDialect     #配置在日志中打印出执行的 SQL 语句信息。     show-sql: true     hibernate:       #配置指明在程序启动的时候要删除并且创建实体类对应的表       ddl-auto: create

编写示例代码

新建实体对象 UserDao.java

实体类,需要使用 @Entity 注解标注 需要对实体类的属性进行标注,使用 @Id 标注组件 使用 @Column 标注非主键

 @Entity @Table(name="t_user") public class UserDO {     @Id     private Integer id;     @Column(name="user_name",length = 200)     private String userName;     @Column(name="password",length = 200)     private String password;     @Column(name="sex")     private Integer sex;     @Column(name="last_login_time")     private Date lastLoginTime;      public Integer getId() {         return id;     }      public void setId(Integer id) {         this.id = id;     }      public String getUserName() {         return userName;     }      public void setUserName(String userName) {         this.userName = userName;     }      public String getPassword() {         return password;     }      public void setPassword(String password) {         this.password = password;     }      public Integer getSex() {         return sex;     }      public void setSex(Integer sex) {         this.sex = sex;     }      public Date getLastLoginTime() {         return lastLoginTime;     }      public void setLastLoginTime(Date lastLoginTime) {         this.lastLoginTime = lastLoginTime;     } }

新建仓库接口类 UserRepository

仓库接口类,UserRepository 是我们常用的 Dao 接口,需要注意

  1. 使用 @Repository 注解

  2. 继承 JPARepository

  3. UserRepository 不需要编写任何代码,即可实现增删查改

@Repository public interface UserRepository extends JPARepository<UserDO,Integer> {  }

编写测试用例

src/test/java/com/fishpro/jpa/

下,新增加

UserRepositoryTest.java

使用

@RunWith(SpringRunner.class)

@SpringBootTest

注解标注类。

@RunWith(SpringRunner.class) @SpringBootTest public class UserRepositoryTest{  }

新增加用户数据

     @Before     public void before(){         UserDO userDO=new UserDO();         userDO.setId(1);         userDO.setUserName("fishpro");         userDO.setSex(1);         userDO.setLastLoginTime(new Date());         userDO.setPassword("passWord");         userRepository.save(userDO);     }

查询单个用户数据

@Test     public void testFind(){         Optional<UserDO> optionalUserDO=userRepository.findById(1);         if(optionalUserDO.isPresent()){             UserDO userDO=optionalUserDO.get();             System.out.println("testFind user"+userDO.getUserName());         }      }

查询多个数据

@Test     public void testFindAll(){         List<UserDO> list=userRepository.findAll();         for (UserDO user:list              ) {             System.out.println("user_name:"+user.getUserName());         }     }

更新数据

@Test     public void testUpdate(){         Optional<UserDO> optionalUserDO=userRepository.findById(1);         if(optionalUserDO.isPresent()){             UserDO userDO=optionalUserDO.get();             userDO.setUserName("fishpro001");             userRepository.save(userDO);             System.out.println("testFind user"+userDO.getUserName());         }      }

删除数据

@After     public void after(){         userRepository.deleteById(1);         userRepository.deleteById(2);         userRepository.deleteById(3);     }

联合主键

例如定义表中userId,roleId 都是主键,此时这样设置

1.定义一个主键类

public class UserRoleKey implements Serializable {     private Integer userId;     private Integer roleId; }

2.定义实体类

@Entity @Table(name="t_user_role") @IdClass(UserRoleKey.class) //注意这里是引入了 定义的符合主键类 public class UserRoleDO {     @Id     private Integer userId;     @Id     private Integer roleId;      public Integer getUserId() {         return userId;     }      public void setUserId(Integer userId) {         this.userId = userId;     }      public Integer getRoleId() {         return roleId;     }      public void setRoleId(Integer roleId) {         this.roleId = roleId;     } }

到此,相信大家对“如何快速搞定Jpa”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何快速搞定Jpa

本文链接: https://www.lsjlt.com/news/84290.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何快速搞定Jpa
    本篇内容主要讲解“如何快速搞定Jpa”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何快速搞定Jpa”吧!数据准备数据库使用的数据表设计如下建表语句如下SET&...
    99+
    2022-10-19
  • 带你快速搞定java IO
    目录一、IO底层是怎么回事?二、梳理类的结构三、IO类大点兵四、来波实例展示1、访问操作文件(FileInputStream/FileReader ,FileOutputStream...
    99+
    2022-11-12
  • 带你快速搞定java数组
    目录1、数组的定义2、array 遍历3、List和array 之间的转换1、数组转list2、list 转数组3、Arrays工具类4、可能遇到的问题总结1、数组的定义 ...
    99+
    2022-11-12
  • 带你快速搞定Mysql优化
    目录1、查询语句的执行顺序2、数据类型的选择3、索引优化主键索引多列索引4、查询性能优化1、查询的生命周期2、SELECT语句尽量指明查询字段名称3、小表驱动大表总结1、查询...
    99+
    2022-11-12
  • 带你快速搞定java多线程
    目录1、什么是线程2、线程的状态3、怎么通俗理解进程,线程?4、线程和进程的区别5、什么是线程安全6、如何创建线程总结:1、什么是线程 线程是操作系统调度的最小单元,也叫轻量级进程。...
    99+
    2022-11-12
  • 带你快速搞定java并发库
    目录一、总览二、Executor总览三、继承结构四、怎么保证只有一个线程五、怎么保证时间可以定时执行六、使用总结一、总览 计算机程序 = 数据 + 算法。 并发编程的一切根本原因是为...
    99+
    2022-11-12
  • 带你快速搞定java多线程(2)
    目录1、Future的类图结构,从整体上看下Future的结构2、future的使用,说的再多都么什么用,来个例子悄悄怎么用的。3、通俗理解4、原理5、总结1、Future的类图结构...
    99+
    2022-11-12
  • 带你快速搞定java多线程(3)
    目录一、锁的概念二、synchronized 的使用方式三、synchronized 的实现原理列小结四、线程池是什么五、为什么要用线程池?六、看下类图,从整体上理解下七、线程池的创...
    99+
    2022-11-12
  • 带你快速搞定java多线程(4)
    目录1、AQS 是什么?2、AQS 模型3、AQS state4、AQS 两种资源共享方式:5、模板方式实现自定义6、锁的分类:公平锁和非公平锁,乐观锁和悲观锁7、CAS8、总结1、...
    99+
    2022-11-12
  • 带你快速搞定java多线程(5)
    目录1、介绍2、countdownlantch的用法。3、如何利用AQS 实现 CountDownLatch4、总结1、介绍 CountDownLantch 倒数计时器,一个同步辅助...
    99+
    2022-11-12
  • Go Http Server框架怎么快速实现?一文搞定
    本篇文章给大家介绍有关Golang的相关知识,聊聊Go Http Server框架的怎么快速实现的,希望对大家有所帮助。在Go想使用 http server,最简单的方法是使用 http/neterr := http.ListenAndSe...
    99+
    2023-05-14
    Golang
  • Spring Data JPA框架快速入门之自定义Repository接口
    目录自定义Repository接口repository接口定义使用Repository接口自定义Repository接口 要定义一个repository接口,你首先需要自定义一个实体...
    99+
    2022-11-13
  • springdata jpa如何使用Example快速实现动态查询功能
    这篇文章将为大家详细讲解有关springdata jpa如何使用Example快速实现动态查询功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Example官方介绍Query by Example (Q...
    99+
    2023-06-25
  • windows中如何快速锁定你的电脑
    windows中如何快速锁定你的电脑,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。怎么样可以最快速的锁定你的电脑呢,这里介绍俩种方法。我们首先右击桌面,右击选新建快捷方式。...
    99+
    2023-06-14
  • MySQL如何快速定位慢SQL的实战
    目录开启慢查询日志系统变量修改配置文件设置全局变量分析慢查询日志mysqldumpslowpt-query-digest开启慢查询日志 在项目中我们会经常遇到慢查询,当我们遇到慢查询...
    99+
    2022-11-13
  • java jpa如何自定义sql语句
    目录java jpa自定义sql语句1.多表关联查询,含条件2.清空表3.模糊查询4.查询结果为VO5.使用@Param注解注入参数jpa自定义sql查询结果直接上代码最后跑一下de...
    99+
    2022-11-12
  • MySQL实战记录之如何快速定位慢SQL
    目录开启慢查询日志系统变量修改配置文件设置全局变量分析慢查询日志mysqldumpslowpt-query-digest用法实战总结开启慢查询日志 在项目中我们会经常遇到慢查询,当我...
    99+
    2022-11-13
  • 如何快速修复win10系统锁定Ie主页
      如何快速修复win10系统锁定Ie主页?随着电脑的使用率越来越高,我们有时候可能会遇到对win10系统锁定IE主页进行设置,如果我们需要对win10系统锁定IE主页进行设置时,要怎么处理win10系统锁定IE主页呢?如果你不知道如何操作...
    99+
    2023-07-10
  • Python文件重定向:如何快速加载数据?
    在Python编程中,数据加载是非常常见的操作。在大多数情况下,我们从外部文件中读取数据并进行处理。然而,当我们面对大量数据时,文件加载的速度可能会变得非常缓慢。为了解决这个问题,我们可以使用Python文件重定向技术来快速加载数据。在本...
    99+
    2023-09-20
    文件 重定向 load
  • 如何快速删除指定Vista注册表键值
    本篇文章给大家分享的是有关如何快速删除指定Vista注册表键值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。无论是对Vista还是Windows 7而言,在优化和破解时,注册表...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作