mybatis resultMap解决属性和字段名字不一致问题

解决实体类属性和列名不一致的两种解决方案


第一种(执行效率快,开发效率低)

  1. 类中的属性为id,name,password
  2. 数据库中的字段为 user_id, user_name,user_password
  3. 为了能让数据库查询到的数据封装到User对象中去 可以采用起别名的方式
    在映射文件中应该这么写
<select id="findAll" resultType="com.yixuexi.entity.User">
	select user_id as id,user_name as name,user_password as password from user;
</select>

总结: 这种解决方案比较原始,如果表中的字段比较多的化开发速度将会很慢很慢

第二种解决方案(执行效率低,开发速度快)

  1. 采用mybatis的一个配置
  2. 直接在映射文件中这样配置
<!--id 就是起个名,在使用的时候用这个名就行   type 是哪个实体类-->
<resultMap id="userMap" type="com.yixuexi.entity.User">
	<!--id 是配置主键字段的对应   property 写类中的属性名 column写数据库中对应的字段名-->
	<id property="id" column="user_id"></id>
	<!--result 是非主键字段的对应-->
	<result property="name" column="user_name"></result>
	<result property="password" column="user_password"></result>
</resultMap>

  1. 在查询的时候 就不要使用resultType表示结果类型了 使用resultMap
<select id="findAll" resultMap="userMap">
	select user_id,user_name,user_password from user
</select>

这样就能查询出来并且封装到实体类中了
注意事项

  • 不要使用了resultType了 而是要用resultMap的id
  • resultMap里子标签id是 用来配置主键字段的
  • resultMap里子标签 result 是用来配置非主键字段的

下一篇更新:主配置文件中引用JDBC.properties 以及一些主配置文件的标签

猜你喜欢

转载自blog.csdn.net/m0_46409345/article/details/108649541