本文介绍如何在 Spring 框架中整合 MyBatis 和 Junit。 1.整合 MyBatis 这里使用一个”纯 MyBatis“的示例项目,在这个项目基础上将其修改为使用 Spring 框架的版本。 关于如何创建 MyBatis 项目以及基本的使用方式,可以看这篇文章。 先下载项目代码并导入数据库sql。 1.1.添加依赖 添加 spring 框架依赖: <dependency> <groupId>org.springframework</groupId> &…
本文介绍如何在 Spring 框架中整合 MyBatis 和 Junit。 1.整合 MyBatis 这里使用一个”纯 MyBatis“的示例项目,在这个项目基础上将其修改为使用 Spring 框架的版本。 关于如何创建 MyBatis 项目以及基本的使用方式,可以看这篇文章。 先下载项目代码并导入数据库sql。 1.1.添加依赖 添加 spring 框架依赖: <dependency> <groupId>org.springframework</groupId> &…
图源:laiketui.com 基础 什么是 Elasticsearch Elasticsearch 是一个开源搜索引擎,可以用它实现从海量数据中对数据的高效查询。 关于 Elasticsearch 的历史渊源以及广泛用途,可以观看这个视频。 倒排索引 和通常搜索数据使用顺序索引的方式不同,Elasticsearch 和其它搜索引擎一样,是基于倒排索引实现的关键词查询,关于倒排索引的原理,可以观看这个视频。 基本概念 与数据库不同,Elasticsearch 有以下基本概念: 文档(Document),一条数据,在…
图源:简书 (jianshu.com) 在之前的文章中我们学习过条件查询(Criterial Query),构建条件查询的一般步骤是: 获取HibernateCriteriaBuilder 利用HibernateCriteriaBuilder创建JpaCriteriaQuery 利用JpaCriteriaQuery获取查询的根 利用HibernateCriteriaBuilder构建谓词 用谓词组装JpaCriteriaQuery 利用JpaCriteriaQuery创建Query并执行查询 本篇文章将进一步说明构…
图源:简书 (jianshu.com) 在 JPA 中关联实体实际上对应表连接,而表连接可以通过内连接(Inner Join)、外连接(Outer Join)和 Where等方式实现,实际上 JPA 也用这些方式实现对所关联的实体数据的查询和加载。 本文示例使用以下实体类: @Getter @Builder @NoArgsConstructor @AllArgsConstructor @Entity public class School { @Id @GeneratedValue(strategy =…
图源:简书 (jianshu.com) 惰性加载带来的问题 在实体类之间建立关系时,可以选择“惰性加载”,比如: @Entity public class Student { // ... @OneToMany(mappedBy = "student", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @Builder.Default private List<Email> emails …
图源:简书 (jianshu.com) JPA 的查询参数分为两种: 命名参数(Named Parameters) 位置参数(Positional Parameters) 类似于 Python 中的函数的位置参数和指名参数。 本文的示例使用下面的实体类: @Entity public class Student { private static final int MAX_SCORE = 100; private static final int MIN_SCORE = 0; public e…
图源:简书 (jianshu.com) JPA 中的查询(Query)有三种类型: Query,用 Java 持久性查询语言(JPQL,Java Persistence Query Language)编写。 NativeQuery,纯 SQL 编写。 Criterial API Query,用编程的方式编写。 为了介绍这些查询,这里定义一个实体类: @Getter @Builder @NoArgsConstructor @AllArgsConstructor @Entity public class Student…
图源:简书 (jianshu.com) Hibernate 中的实体,由标识符(Identitifier)确定了其实体实例的唯一性,这对应于表中的主键。 @Id 对于单一属性作为标识符的情况,可以用@Id注解标注: @Entity(name = "Person5") @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Person { @Id private Long id; } 被@Id标注的属性类型必须是 Jav…
图源:简书 (jianshu.com) 关系型数据库设计中是不存在继承概念的,但实体类可以用继承来组织代码结构,所以需要用一种方式将实体类的继承结构映射到表结构。 本文将介绍几种在 JPA(Hibernate)中映射实体类继承层次的方式。 @MappedSuperclass 第一种方式是用@MappedSuperclass标记超类(Super Class),超类并不对应任何表结构,而是体现在子类对应的表中都拥有超类的字段(每个子类对应一张表)。 @ToString @Getter @Setter @AllArgsC…
图源:简书 (jianshu.com) JPA(Hibernate)中有一些注解可以用于筛选实体和关系,本文将介绍这些注解。 @Where 有时候,我们希望对表中的数据进行“软删除”,即删除的时候只修改其标记位而不从表中物理删除。 对于存在软删除的表,在执行相应查询的时候都要考虑删除标记,即添加上相应字段的条件语句后进行查询。这样就显得很麻烦,持久层框架一般都会支持对这种情况的“自动处理”,比如 MyBatisPlus。 JPA(Hibernate) 同样支持这种做法,通过使用@Where注解实现: @Entity…
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED. 本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang