Mybatis框架之解决列名(表中的字段名称)和实体类中的属性名不一致
2018-11-09 09:56
183 查看
查询数据的时候,查不到userName的信息,原因:数据库的字段名是user_name,而POJO中的属性名字是userName
两端不一致,造成mybatis无法填充对应的字段信息。修改方法:在sql语句中使用别名
解决方案1:在sql语句中使用别名
解决方案2:参考驼峰匹配 — mybatis-config.xml 的时候
解决方案3:resultMap自定义映射
示例:
步骤一:将驼峰匹配注释掉
一旦注释掉驼峰匹配,那么再通过queryUserById查询的结果中,用户名就无法封装了,此时我们可以尝试使用ResultMap来解决这个问题。
步骤二:在UserMapper.xml中配置resultMap
<resultMap type="User" id="userResultMap" autoMapping="true"> <!-- id标签:配置主键映射,column:表中的字段名称,property:属性名称 --> <id column="id" property="id"/> <!-- 可以用来配置普通类型字段和属性映射(非复杂类型) --> <result column="user_name" property="userName"/> </resultMap> 步骤三:在statement中引用自定义resultMap <!-- select:查询的statement,用来编写查询语句。 id:语句的唯一标识,使用动态代理之后,必须和mapper接口中的方法名称一致。 resultType:配置返回的结果集类型 parameterType:参数类型,可以省略。 -->select * from tb_user where id = #{id} 测试无误 注意:测试完记得将驼峰命名的配置重新开启,因为其他的测试方法还要用。 **resultMap的自动映射** 在上面讲到的resultMap中,主键需要通过id子标签配置,表字段和属性名不一致的普通字段需要通过result子标签配置。 那么,字段和属性名称都匹配的字段要不要配置?
这个取决于resultMap中的autoMapping属性的值:
为true时:resultMap中的没有配置的字段会自动对应。如果不配置,则默认为true。
为false时:只针对resultMap中已经配置的字段作映射。
相关文章推荐
- MyBatis框架解决字段名与实体类属性名不一致的情况
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
- MyBatis学习笔记:表字段名与实体类属性名不一致的解决方法
- 使用Mybatis时实体类属性名和表中的字段名不一致导致结果无法映射到实体类的解决办法
- 在Mybatis中,解决数据库字段名与java实体类属性名不一致的三种方式
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
- Mybatis实体类属性与数据库字段不一致解决办法
- Mybatis中解决数据库字段名与实体类属性名不同的问题
- MyBatis解决字段名与实体类属性名不相同的冲突
- MyBatis入门学习教程-解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
- Mybatis解决属性名与字段名不一致
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- Mybatis中实体类中的字段跟对应表的字段不一致时解决办法