添加模式
//------------------------
//-----------------------------
//----------创建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());
}
}
}
//--------------结果-------------------------------