这代码有什么缺陷吗?
这是我看默然老师视频的代码!!!呵呵!! 只要知道数据库字段名就行了
他用的是List<Propreties>! 但是只可以传 String类型的!! 不知道我这样写有什么问题吗??
public List<Map> executeSql(String sql,Object[] o){
List<Map> list = new ArrayList<Map>();
conn = getConn();
try {
ps = conn.prepareStatement(sql);
if(null != o){
for(int i = 0;i < o.length;i++){
ps.setObject(i+1, o[i]);
}
}
rs = ps.executeQuery();
md = rs.getMetaData();
while(rs.next()){
Map map = new HashMap();
for(int i = 1;i <= md.getColumnCount(); i++){
String colName = md.getColumnName(i);//得到数据列名称
Object colValue = rs.getObject(i);//得到值
map.put(colName, colValue);//添加到map里面
}
list.add(map);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll(conn,ps,rs);
}
return list;
===================
测试通过:
BaseDao baseDao = new BaseDao();
String sql = "select * from users where username=? and age=? and nowTime<?";
//String sql = "select * from users"; List<Map> list = baseDao.executeSql(sql, null);
Object[] o = {"chenrujia",18,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())};
List<Map> list = baseDao.executeSql(sql, o);
for (Map map : list) {
System.out.println("姓名:"+map.get("username"));
System.out.println("密码:"+map.get("password"));
System.out.println("年纪:"+map.get("age"));
System.out.println("时间:"+map.get("nowTime")+"\n");
}
-------------------sql
create database MyDemo
use MyDemo
go
create table users
(
userid int identity(1,1) primary key,
username varchar(50) not null,
password varchar(50),
age int ,
nowTime datetime
)
insert into users values('yiwai','yiwai',17,getDate())
insert into users values('chenrujia','chenrujia',18,getDate())
insert into users values('yuha521','yuha521',19,getDate())
select * from users
go
========================
如果按照默然老师那样写通用查询的话! 我发现连entity实体.dao.和dap.impl都不需要了,就写个BaseDao写两个通用增删改查就可以了!! 要显示数据直接在网页里输出就可以了! 根本就不需要那么麻烦了! 但是又不符合MVC模式了!!! 到底应该做!!!! 如果要用entity又显得多次一举!! o(∩_∩)o...! 菜鸟问题哦!!! 发现这个东西太强大了!省去不知道多少代码! 呵呵