一、自定义查询
1、单表查询(返回实体类列表)
此方式对于复杂SQL查看很不方便
@Query(value = "SELECT new com.geely.trip.engine.bean.po.OrderInvoicePO(oo.orderNumber,oo.orderStatusCode,oo.orderStatusDes,oo.createTime) FROM OrderEntity oo WHERE oo.ownerCode = ?1 ",nativeQuery = false)
List<OrderInvoicePO> getUnInvoicedOrderList(String ownerCode);
2、单表查询(返回结果集再做转换)
此方式需要对查询后的结果集再做一次转换
//Dao.java
@Query(value = "SELECT oo.order_number,oo.order_status_code,oo.order_status_des,oo.create_time FROM `oe_order` oo WHERE oo.owner_code = ?1 ",nativeQuery = true)
List<Object[]> getUnInvoicedOrderList(String ownerCode);
//Service.java
List<Object[]> unInvoicedOrderList = orderDao.findUnInvoicedOrderList(userCode);
List<OrderUnInvoicedPO> orderInvoicePOList = EntityUtils.castEntity(unInvoicedOrderList, OrderUnInvoicedPO.class, new OrderUnInvoicedPO());
//EntityUtils.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EntityUtils {
private static Logger logger = LoggerFactory.getLogger(EntityUtils.class);
/**
* 将数组数据转换为实体类
* 此处数组元素的顺序必须与实体类构造函数中的属性顺序一致
*
* @param list 数组对象集合
* @param cla