本文共 3257 字,大约阅读时间需要 10 分钟。
一、首先是实体类的定义:
package com.example.entity;import lombok.*;import javax.persistence.*;import java.io.Serializable;/** * @author xiaobu * @version JDK1.8.0_171 * @date on 2018/11/13 10:51 * @description V1.0 */@Entity@Table(name = "test_book")@NoArgsConstructor@Setter@Getter@ToStringpublic class Book implements Serializable { private static final long serialVersionUID = 6214167880862325845L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name="name",columnDefinition=("varchar(50) default null comment '名称'")) private String name; @Column(name="author",columnDefinition=("varchar(252) default null comment '作者'")) private String author;}
二、自定义非实体类的定义:
package com.example.entity.vo;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.Setter;import lombok.ToString;import java.io.Serializable;/** * @author xiaobu * @version JDK1.8.0_171 * @date on 2018/11/16 10:05 * @description V1.0 */@Getter@Setter@ToStringpublic class BookVo implements Serializable { private static final long serialVersionUID = 294655766971777057L; public BookVo (String name, String author) { super(); this.name = name; this.author = author; } private String name; private String author;}
三、使用HQL方式查询:
Listlist = bookRepository.findByHql("select new com.example.entity.vo.BookVo (b.name,b.author) from Book b");
四、使用SQL方式查询(需要把结果通过反射转为对应的自定义的非实体类)
List
五、EntityUtils工具类的内容如下:
package com.example.util;import lombok.extern.slf4j.Slf4j;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author xiaobu * @version JDK1.8.0_171 * @date on 2018/11/16 11:06 * @description V1.0 */@Slf4jpublic class EntityUtils { /** * 数组集合转化为指定对象集合 * 指定的实体对象必须包含所以字段的构造方法,数组的元素的顺序将和构造方法顺序和类型一一对应 * * @param list 集合 * @param clazz c * @param类型 * @return List */ public static List castEntity(List
六、查询的字段名须和实体的属性一一对应
转载地址:http://fygai.baihongyu.com/