1318953725 2009-05-23 20:42
浏览 282
已采纳

iBatis 高级问题 ! 外部参数映射!

[b]由于本人表达能力不是很好,如果下面所说不能让你理解,请告之....!谢谢!
问题:
ibatis 使用外部映射,指定了nullValue属性,
向表中插入数据时,如果有参数为null,还是要报错
比如 下面的password未赋值时,会出问题[/b]




insert into user(name,password,age)
values(?,?,?)

javaBean为

public class User{

private String name;
private String password;
private int age;

public void setName(String name){this.name=name;)}
public String getName{return this.name;}
public void setPassword(String password){this.password=password;}
public String getPassword{return this.password;}
public void setAge(int age){this.age=age;}
public int getAge{return this.age;}

}

.....................
//下面的代码访问数据库
SqlMapClient smc=......//构建一个SqlMapClient对象
User user=new User();
user.setName("admin");//只给name赋值,其它两个字段为空
smc.insert("insertUser",user);

//------------谢谢您的观看!

....................

  • 写回答

1条回答 默认 最新

  • wangquanhpu 2009-05-24 01:20
    关注

    根据哥们的描述感觉似乎哥们把nullValue这个属性的意思理解错了。
    nullValue的作用是:当Java Bean 的属性值等于指定值时,相应的表字段将赋值NULL。这个特性 允许在应用中给不支持null 的数据类型(即int,double,float 等)赋值null。哥们的理解可能是当javaBean中的字段为空时用nullValue指定的值替换入库吧。这是我的猜想,理解错了还还请见谅。呵呵。

    你这里出错倒不是因为上面的原因。
    我先把正确的贴出来:





    下面我说下原因:
    JavaBean中的password字段为string初始值为null,
    传入parameterMap的值也为null,入库时相当于对相应字段插入空值。
    而jdbc Driver无法识别该空值的类型。所以必须指定jdbcType的类型。告诉jdbc
    Driver 这是个varchar类型的空值。问题应该就出在这。
    总之:当往库中插入空值的时候,应该指定jdbcType类型。
    完毕,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧