value object--javabean中的问题,急需解决!!

weigbo 2005-04-23 03:41:24
简单说明一下问题:
Org.java
public class Org{
private int orgId;
public void setOrgId(int orgId){
this.orgId=orgId;
}
public int getOrgId(){
return orgId;
}
...
}
OrgDaoOraImpl.java中的方法select代码如下:
public Org[] select(Connection con, Org o) throws SQLException {
Org[] orgs = null;
PreparedStatement ps = null;
ResultSet rs = null;
StringBuffer buff = new StringBuffer();
try {
buff.append("SELECT * FROM org WHERE 1 = 1 ");
if (o != null) {
if (o.getOrgId() >= 0)
buff.append(" AND orgid=?");
if (o.getOrgName() != null && !o.getOrgName().equals(""))
buff.append(" AND orgname LIKE ? ");
}
buff.append(" order by orgid asc ");
ps = con.prepareStatement(buff.toString());
if (o != null) {
int index = 1;
if (o.getOrgId() >=0)
ps.setInt(index++, o.getOrgId());
if (o.getOrgName() != null && !o.getOrgName().equals(""))
ps.setString(index++, "%" + o.getOrgName() + "%");
}
rs = ps.executeQuery();
orgs = (Org[]) populate(rs);
} catch (Exception e) {
throw new SQLException("Exception occurred when find! "
+ e.getMessage());
} finally {
DbUtil.close(rs, ps, null);
}
return orgs == null ? new Org[0] : orgs;
}

假设数据库中有五条记录,orgid分别为0,1,2,3,4,5.
Org o=new Org();
o.setOrgName("wei");
select(o);
这时问题就出现了。如果orgId为1,2,3,4,5,姓名为wei时,将查不到记录。
因为javabean中默认int型为0,此时上面相关语句将变成如下:
select * from org where 1=1 and orgid=0 and orgname='wei'

大家有没有什么办法急救呀。。
1.不让数据库中的机构id为0,可行,但在我这已经没有办法了,别人用了,不能改,和其它表关联很大。
...全文
130 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weigbo 2005-04-24
  • 打赏
  • 举报
回复
我的目的是多重查询,按照数据库字段查找。想想输几个就几个。。可以单独orgid,也可以name
MARS.nEIL 2005-04-24
  • 打赏
  • 举报
回复
Org o=new Org(); //在这里调用构造函数的时候,orgId没有显示赋值,那么它就默认赋值0
o.setOrgName("wei");
select(o);
那么o.getOrgId()还怎么能大于0呢??永远都等于0了,如果要查找其它的,可以调用setOrgId来改变orgId的值..
weigbo 2005-04-24
  • 打赏
  • 举报
回复
顶一下
weigbo 2005-04-23
  • 打赏
  • 举报
回复
因为我现在在项目中做基础数据子系统,许多数据别人都用到,记录根本就不能改,极度郁闷中。
而且程序中大部分Dao类都采用了上面的方法从数据库中取数据。
如果判断不取默认的整型0,那么记录中orgid为0的又将查不到。。。项目25号验收。急救。。
if (o != null) {
if (o.getOrgId() != 0)
buff.append(" AND orgid=?");
if (o.getOrgName() != null && !o.getOrgName().equals(""))
buff.append(" AND orgname LIKE ? ");
}
weigbo 2005-04-23
  • 打赏
  • 举报
回复
Org o=new Org();
o.setOrgName("wei");
select(o);
这样的话,一样解决不了问题呀。。
因为javabean中改int型为1,此时上面相关语句将变成如下:
select * from org where 1=1 and orgid=1 and orgname='wei'
这时,0,2,3,4,5中姓名为wei的就查不出来了。
应用Dao中令我极烦的问题,难道除了限制数据库中的orgid不能为0就没有什么办法了吗?
MARS.nEIL 2005-04-23
  • 打赏
  • 举报
回复
public class Org{
private int orgId=1;
public void setOrgId(int orgId){
this.orgId=orgId;
}
public int getOrgId(){
return orgId;
}
...
}

67,541

社区成员

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

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