mybatis插入嵌套对象

今晚做项目遇上了一个需求,需要插入嵌套对象。

对象结构是这样的:

public class RegisterMsg{

  private  Header header;
  private short provinceId;

}

public class Header{
  private String terminalPhone;

}

mapper.xml里是这样的:

扫描二维码关注公众号,回复: 7584740 查看本文章
<insert id="add_resgister" parameterType="net.virtuemed.jt808.vo.req.RegisterMsg" >
        insert into terminal_register(terminalPhone,provinceId) values(#{Header.terminalPhone},#{provinceId})
</insert>

发生了报错:

exceptionCaughtorg.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException:

There is no getter for property named 'Header' in 'class net.virtuemed.jt808.vo.req.RegisterMsg'

大致意思是不能识别Header

通过把Header改成header,就不会报错了。

 

这个BUG的产生原因是因为我犯了以下错误:

1.不应该是#{属性对象的类型.属性},应该是#{属性对象的名字.属性}

2.当时脑子短路了,下意识的不区分大小写。

 

收获:

1.嵌套对象的引用是#{属性对象的名字.属性}

2.说到大小写,顺便回想起了一个知识点,数据库不区分大小写,Java属性严格区分大小写。

猜你喜欢

转载自www.cnblogs.com/ledphz/p/11735125.html