SpringDataJpa默认查询都是查询全部的字段,如果只想查询指定的几个字段可以采用如下方式查询。
<br/>
**1. hsql + 指定构造器查询**
```java
public class Student {
//必须提供对应的构造器
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
}
```
```java
/**
* hsql查询,实体类接收
*/
@Query("select new com.learn.springdatajpa01.pojo.Student(student.name, student.age) from Student student")
List<Student> findAll01();
```
**2. hsql查询,Map接收**
```java
//必须使用as重命名字段
@Query("select student.name as name, student.age as age from Student student")
List<Map<String, Object>> findAll02();
```
**3. 原生SQL查询,实体类接收**
```java
/**
* 1. 必须写全实体类Student的所有属性,不需要查询的字段给一个默认值,比如 ''。
* 2. 如果Student实体类中还存在其他的实体类,这个查询方式就不适用了。
*/
@Query(value = "select '' as id, '' as sex, '' as total, name, age from student", nativeQuery = true)
List<Student> findAll03();
```
**4. 原生SQL查询,Map接收**
```java
@Query(value = "select name, age from student", nativeQuery = true)
List<Map<String, Object>> findAll04();
```
- MapStruct属性映射
- MapStruct是什么
- maven依赖
- 基本映射
- 字段名不一致的映射
- 字段类型不一致的映射
- 基本数据类型转换
- 日期格式转换
- 使用表达式转换
- 枚举映射
- 多个源类的映射
- 集合的映射
- 添加自定义映射方法
- 映射前后
- 添加默认值
- 映射异常处理
- SpringDataJPA
- SpringDataJPA是什么
- 与JPA、Hibernate的关系
- 环境搭建
- 简单CURD操作
- 内部原理
- 主键生成策略
- 联合主键
- 查询方式
- 方法命名规则查询
- 限制查询结果查询
- 注解@Query查询
- 命名参数查询
- SpEL表达式查询
- 原生查询
- 更新与删除
- Specification动态查询
- 核心接口
- 查询例子
- 分页查询与排序
- 多表查询
- 一对一查询
- 一对多查询
- 多对多查询
- 注意事项
- Specification多表查询
- @Query多表查询
- 只查询指定字段
- 级联操作
- 加载规则