# 代码辅助

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

JPA 代表贫血领域模型模式。 通常，主要的领域对象分层如下：

1.  实体只包含数据

2.  Spring Data 仓库声明实体的 CRUD 操作

3.  各实体到其 DTO 的 DTO 和映射器

这样的分离看起来很自然，因为每一层都有其明确的职责范围。 然而，由于对实体各种可用操作的发现能力差，它在开发过程中带来了额外的复杂性。

JPA Buddy 通过为 JPA 实体、 Spring Data 存储库、 DTO 和 MapStruct 映射器集成许多代码辅助功能来解决此问题，这使得开发更加简单透明。

[Video](https://www.youtube.com/v/J0rix2wqOFU)

## 代码补全

### 生成并注入 Spring Data JPA Repositories

要创建一个新的 Spring Data JPA 仓库，只需开始输入以实体名称开头的仓库名称（1）。 然后， [repository wizard](jpa-buddy-spring-data.html#repository-creation) 将会打开。

通过遵循相同的编码风格，您还可以注入现有的 Spring Data JPA repository (2)。 只需开始输入现有的存储库名称，JPA Buddy 就会找到它。

![spring-data-jpa-repository-generation-injection](https://resources.jetbrains.com.cn/help/img/idea/2026.3/spring-data-jpa-repository-generation-injection.png)

根据您的 [injection settings](#settings)，JPA Buddy 将把 repository 注入到当前类中。 下面的示例显示了基于构造函数的注入：

![spring-data-jpa-repository-generation-injection](https://resources.jetbrains.com.cn/help/img/idea/2026.3/repository-injection-result.png)

#### 生成和调用方法／查询

使用 JPA Buddy，您不需要在多个编辑器之间切换焦点。 您可以直接从这里调用 [query visual designers](jpa-buddy-spring-data.html#example)：

![repository-methods-generation](https://resources.jetbrains.com.cn/help/img/idea/2026.3/repository-methods-generation.png)

此外，您可以通过实体类名称找到/创建存储库方法：

![调用实体类名方法](https://resources.jetbrains.com.cn/help/img/idea/2026.3/entity-class-name-method-call.png)

### 生成并注入 MapStruct 映射器

JPA Buddy 能够生成 MapStruct 映射器，注入它并搭建一个适当的映射调用。 请使用 "mapTo..." 选项来 [生成一个新的映射器](jpa-buddy-dto-generator.html#mapstruct-support)，或从现有的映射器中应用方法（例如，   mapToPetDto   对于下面的示例）。 此功能适用于单个实例和实体或 DTO 的集合。

![map-to-postfix](https://resources.jetbrains.com.cn/help/img/idea/2026.3/map-to-postfix.png)

选择   mapToPetDto   选项后，JPA Buddy 将生成以下代码：

![映射到结果](https://resources.jetbrains.com.cn/help/img/idea/2026.3/map-to-result.png)

## 从未解析的引用生成 JPA 相关对象

一些开发者可能会选择先声明对象，然后再实现它。 JPA Buddy 将帮助那些遵循这种编程风格的开发者。 建议创建：

1.  如果引用以 [Spring Data Repository settings](jpa-buddy-spring-data.html#settings)中指定的值结尾，则使用Spring Data JPA Repository。 默认值为   仓库  。

2.  如果引用以 [Projection declaration settings](jpa-buddy-spring-data.html#projection-declaration-settings) 中指定的值结束，则进行投影。 默认值是：   信息  、   Prj  、   投影  、   VO  、   Vo  、   视图  、   请求  、   浏览  。

3.  DTO——如果引用以 [DTO Declaration Settings](jpa-buddy-dto-generator.html#dto-declaration-settings)中指定的值结尾。 默认值为   数据传输对象  。

![未解析引用](https://resources.jetbrains.com.cn/help/img/idea/2026.3/unresolved-references.png)

然后，对应的向导将会打开。

## Kotlin 支持

Java 开发者喜爱的所有功能同样适用于 Kotlin 爱好者。 无论您是即席创建 Spring Data 仓库、注入 MapStruct 映射器还是搭建方法调用架构——JPA Buddy 都能满足您的需求。 如果您希望在 Kotlin 中创建一个 REST 端点，JPA Buddy 使之变得轻而易举：

[Video](https://www.youtube.com/v/O6PzJdDcFWQ)

## 设置

JPA Buddy 提供灵活的设置，使编码辅助功能的使用更加便捷。 您可以：

1.  启用/禁用 bean 注入类型的自动检测；

2.  定义 [bean 注入策略](https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-factory-collaborators)，JPA Buddy 在代码生成时将按照此策略执行；

3.  配置是否使用智能完成功能。

![设置-编码辅助](https://resources.jetbrains.com.cn/help/img/idea/2026.3/settings-coding-assistance.png)

