万能SQL语句?

 在前天的课上,听了这么一个词:万能查询.刚开始还不知道怎么一回事,知道老师把几个毫无头绪,以为要写很多个方法的程序实现的时候,我真是傻眼了...唉,总结一下,以后这一点真的很重要呢...包括全局统筹包括代码的清晰健壮,是我见过的最好的解决方法了...这样,我对于 SQL 语句的理解更进了一步..更觉得 SQL 语句的拼接真是一件很神奇的事情!....

 

以下是一个 dao 中其中一个方法,重点是这个 sql 语句的用法,只用这一个方法,就能以不变应万变,真是让我们这些刚开始项目实践的人看的佩服至极,本来以为有好多种可能,无比繁琐的事情在这个 sql 语句一些出来,一切就变得简单明了了.你看,这个 sql 语句是用来修改相关用户的相关信息的,由于修改的项数并不确定,因此用以前只传一个值得方法显然是不可取的.可是,用下面的句子就不一样了,sql语句会根据调用它的对象传过来的值的多少来决定 sql 语句的长度,随机应变,灵活自如...这样的事情何乐而不为呢?

 

public boolean update(Connection con, UserDTO udto){
  boolean flag = false;
  String sql = "UPDATE users SET ";
  int f = 0;
  if(udto.getClassname() != null){
   if(f > 0) sql += ",";
   sql += "classname = '" + udto.getClassname() + "'";
   f++;
  }
  if(udto.getDescript() != null){
   if(f > 0) sql += ",";
   sql += "descript = " + udto.getDescript()+ "'";
   f++;
  }
  if(udto.getEmail() != null){
   if(f > 0) sql += ",";
   sql += "email = '" + udto.getEmail()+ "'";
   f++;
  }
  if(udto.getGender() != null){
   if(f > 0) sql += ",";
   sql += "gender = " + udto.getGender();
   f++;
  }
  if(udto.getHead() != null){
   if(f > 0) sql += ",";
   sql += "head = '" + udto.getHead()+ "'";
   f++;
  }
  if(udto.getLastlogintime() != null){
   if(f > 0) sql += ",";
   sql += "lastlogintime = '" + udto.getLastlogintime()+ "'";
   f++;
  }
  if(udto.getLevel() != null){
   if(f > 0) sql += ",";
   sql += "level = " + udto.getLevel();
   f++;
  }
  if(udto.getNickname() != null){
   if(f > 0) sql += ",";
   sql += "nickname = '" + udto.getNickname()+ "'";
   f++;
  }
  if(udto.getPassword() != null){
   if(f > 0) sql += ",";
   sql += "password = '" + udto.getPassword()+ "'";
   f++;
  }
  if(udto.getPersonality() != null){
   if(f > 0) sql += ",";
   sql += "personality = '" + udto.getPersonality()+ "'";
   f++;
  }
  if(udto.getScore() != null){
   if(f > 0) sql += ",";
   sql += "score = " + udto.getScore();
   f++;
  }
  if(udto.getStatus() != null){
   if(f > 0) sql += ",";
   sql += "status = " + udto.getStatus();
   f++;
  }
  if(udto.getUsername() != null){
   if(f > 0) sql += ",";
   sql += "username = '" + udto.getUsername()+ "'";
   f++;
  }
  if(udto.getRemark1() != null){
   if(f > 0) sql += ",";
   sql += "remark1 = '" + udto.getRemark1()+ "'";
   f++;
  }
  if(udto.getRemark2() != null){
   if(f > 0) sql += ",";
   sql += "remark2 = '" + udto.getRemark2()+ "'";
   f++;
  }
  if(udto.getRemark3() != null){
   if(f > 0) sql += ",";
   sql += "remark3 = " + udto.getRemark3();
   f++;
  }
  sql += " WHERE id=" + udto.getId();
  

 

当然,这个随传值内容而变的 sql 语句,写起来还真得注意方法..首先,这个方法里面封装的是一个数据库连接对象和一个 userDTO 容器,这个容器里面就可以封装相关的信息来完成对数据库德操作.当然这个容器里面的内容就可以有很多种可能喽!

 

这样以来,就能快速而准确地完成一个 dao,这对于完成高质量的底层程序而言,无疑是一个很好的方法.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值