java_295_手写SORM框架_工厂模式QueryFactory_克隆模式_练习

添加模式
在这里插入图片描述

//------------------------
在这里插入图片描述
//-----------------------------
在这里插入图片描述
在这里插入图片描述
//----------创建Query对象的工厂类-----单例-----克隆-----
package com.han.sorm.core;
/**
*创建Query对象的工厂类
*/
@SuppressWarnings(“all”)//压制警告用;
public class QueryFactory implements Cloneable{//查询工厂类;

private static QueryFactory factory = new QueryFactory();

/*private static Class c ;//单例模式
//创建对象 加载对象并初始化
static{
	 try {
		 c = Class.forName(DBManager.getConf().getQueryClass());//加载指定的query类
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	}
}
//加载类
public Query createQuery(){
	
	try { 这个方法效率低
		return (Query) c.newInstance();//通过反射创建query类
	} catch (Exception e) {
		e.printStackTrace();
		return null; 
	}
}
*/

private static Query protottypeObj;//克隆模式;原型对象
static{
	try {//加载时执行一次
		Class c = Class.forName(DBManager.getConf().getQueryClass());//加载指定的query类
		protottypeObj = (Query) c.newInstance();//转型
	} catch (Exception e) {
		e.printStackTrace();
	}
}
//私有构造器
private QueryFactory(){	
}
//加载类
public static Query createQuery(){
	try {
		return (Query) protottypeObj.clone();//在上面实现Cloneable接口
	} catch (CloneNotSupportedException e) {
		e.printStackTrace();
		return null;
	}
}

}
//----------------------添加克隆方法-----------------------
在这里插入图片描述

在这里插入图片描述
//----------------测试类---------------------
在这里插入图片描述
package com.han.test;

import java.util.List;
import com.han.sorm.core.Query;
import com.han.sorm.core.QueryFactory;
import com.han.vo.EmpVo;

/**
*测试
*/
public class Test {
public static void main(String[] args) {
Query q = QueryFactory.createQuery();
//测试多行多列查询
String sql2 = “select e.id,e.empname,salary+bonus ‘xinshui’,age,d.dname ‘deptName’, d.address ‘deptAddr’ from emp e "
+” join dept d on e.deptId=d.id";
List list2 = q.queryRows(sql2,EmpVo.class,null);
//System.out.println(list2);
//遍历打印
for(EmpVo e:list2){
System.out.println(e.getEmpname()+"-"+e.getAge()+"-"+e.getDeptAddr()+"-"+e.getXinshui());
}
}
}
//--------------结果-------------------------------
在这里插入图片描述


版权声明:本文为weixin_45339692原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。