使用MyBatis3时 selectOne 方法返回null的问题记录

不多废话,直接上干货。

mapper配置:

 1     <resultMap type="User" id="usermap">
 2         <result column="uId" property="uId"/>
 3         <result column="uName" property="uName"/>
 4         <result column="uNickName" property="uNickName"/>
 5         <result column="uPhone" property="uPhone"/>
 6         <result column="uEmail" property="uEmail"/>
 7         <result column="uPassword" property="uPassword"/>
 8         <result column="uTrueName" property="uTrueName"/>
 9         <result column="uCreateTime" property="uCreateTime"/>
10     </resultMap>
11     <resultMap type="User" id="mp">
12         <result column="uId" property="userId"/>
13         <result column="uName" property="userName"/>
14         <result column="uNickName" property="userNickName"/>
15         <result column="uPhone" property="userPhone"/>
16         <result column="uEmail" property="userEmail"/>
17         <result column="uPassword" property="userPassword"/>
18         <result column="uTrueName" property="userTrueName"/>
19         <result column="uCreateTime" property="userCreateTime"/>
20     </resultMap>
21     <select id="selectBlog" resultMap="mp">
22         select * from tb_user where uId = #{userId}
23     </select>

Java代码:

1         SqlSession session = sqlSessionFactory.openSession();
2         User u = new User();
3         u.setUserId(2);
4         User s1 = session.selectOne("selectBlog", u);

以上是MyBatis配置的两种两种 resultMap(usermap,mp),以及Java调用代码。

结果:

  usermap:可以查到结果,但是当用对象接收时会显示NULL。

  mp:可以使用。

原因:

  resultMap > result:property:映射到列结果的字段或属性。如果匹配的是存在的,和给定名称相同 的 JavaBeans 的属性,那么就会使用。否则 MyBatis 将会寻找给定名称 property的字段。这两种情形你可以使用通常点式的复杂属性导航。比如,你 可以这样映射一些东西: “username” ,或者映射到一些复杂的东西: “address.street.number” 。

      resultMap > result:column:从数据库中得到的列名,或者是列名的重命名标签。这也是通常和会 传递给 resultSet.getString(columnName)方法参数中相同的字符串。

结论:

  column、property的对应书写错误。

posted @ 2017-01-10 11:21  原野里的回忆  阅读(1357)  评论(0编辑  收藏  举报