JRT查询业务写法支持

以前用M的Query链接来链接去的还不用实体承载实在是太方便了,用其他语言后从数据库查询的数据需要对象承载才行。一般ORM可以让你传和表对应的实体给你放数据,但是这样就有个问题,和表对应的实体无法放其他附加信息,如:父表的名称,这样的话就不得不先把数据查询到,再循环数据往业务实体拷数据,浪费性能,代码写的也不美,为此改进这种写法。先让ORM支持传入实体类的继承子类的查询方式。

支持传实体子类型后查询的写法实例,这样既方便又省去了拷贝的开销

import JRT.Model.Entity.BTAdmissionType;
import JRT.Model.Entity.BTHospital;
import JRT.Model.Entity.BTWorkGroup;
import JRT.Model.Entity.RPVisitNumber;
import JRTBLLBase.BaseHttpHandlerNoSession;
import JRTBLLBase.Helper;

import java.util.List;

/**
 * 通过实体子类查询的示例,演示用实体的子类查询主数据后有DolerGet爬行相关数据
 */
public class ashChildModelTest extends BaseHttpHandlerNoSession
{
    /**
     * 通过实体子表查询组装数据
     * @return
     */
    public String Test() throws Exception
    {
        //查主数据,这里传的是实体类的继承子类,因为实体类无法承载其他字段信息,需要ORM支持,如果不支持就还得自己再拷贝数据组装
        List<RPVisitNumberChild> visList=EntityManager().DolerFindAll(0,new RPVisitNumberChild(),null,"",-1,-1,"",null,null);
        //遍历主数据查询周边的多维数据
        for(RPVisitNumberChild c:visList)
        {
            //投入整个医院信息
            if(c.HospitalDR!=null) {
                c.HosDto = EntityManager().DolerGet(new BTHospital(), c.HospitalDR);
            }
            //放入接收工作组
            if(c.ReceiveWorkGroupDR!=null) {
                c.ReceiveWorkGroupName = EntityManager().DolerGet(new BTWorkGroup(), c.ReceiveWorkGroupDR).CName;
            }
            //就诊
            if(c.AdmissionTypeDR!=null)
            {
                c.AdmissionTypeName = EntityManager().DolerGet(new BTAdmissionType(), c.AdmissionTypeDR).CName;
            }
        }
        return Helper.Object2Json(visList);
    }

    /**
     * 标本子类
     */
    public static class RPVisitNumberChild extends RPVisitNumber
    {
        /**
         * 存工作小组名字
         */
        public String ReceiveWorkGroupName;

        /**
         * 存就诊名字
         */
        public String AdmissionTypeName;

        /**
         * 存医院实体
         */
        public BTHospital HosDto;
    }
}



测试效果
JRT查询业务写法支持_第1张图片

ORM的支持
JRT查询业务写法支持_第2张图片

这就是主推的业务数据加工方式

你可能感兴趣的:(java)