这代码有什么缺陷吗?

yuha521 2009-04-27 01:09:36
这是我看默然老师视频的代码!!!呵呵!! 只要知道数据库字段名就行了
他用的是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...! 菜鸟问题哦!!! 发现这个东西太强大了!省去不知道多少代码! 呵呵



...全文
109 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuha521 2009-04-27
  • 打赏
  • 举报
回复
呵呵!!! 谢谢指点!!
ben0759 2009-04-27
  • 打赏
  • 举报
回复
这样代码没问题的,我也是写了一个baseDAO来执行操作,但是我用了entity,这个跟MVC模式没什么关系,如果你用的是Jdbc,可能不需要用ORM的思想,就用map来保存你要的数据,这个对于业务逻辑不复杂的系统来说,的确可以缩小代码量,但如果对于关联关系比较大的,逻辑比较复杂的系统,需要在service里面写关于几个表的操作的时候,可能entity对你的帮助会更大,不需要通过map来管理这么多逻辑,而且用entity比map多了一个好处,就是管理起来比较容易,楼主有没有想过,如果在页面需要调用大量的map的时候,万一需求改变,底层数据库的属性改变了,你需要更改多少个map?
yuha521 2009-04-27
  • 打赏
  • 举报
回复
在线等答案!!!!!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧