标签:三范式 设计 第三范式 null 文件中 优秀 新建 lang sql
新建一个项目,使数据库与实体类字段名称不一致
public class User {
private int id;
private String name;
private String password;//数据库中为pwd
查询出来初选问题:
User{id=3, name=‘王二‘, password=‘null‘}
select * from mybatis.user where id=#{id}
//类型处理器:如果实体类中有同名字段,直接将数据库查询与实体类属性匹配
select id,name,pwd from mybatis.user where id=#{id}
在这里显然类型处理器找不到实体类中的‘pwd’
解决方法:
起别名
select id,name,pwd as password from mybatis.user where id=#{id}
resultMap(重点)
mapper配置文件中resultMap
id name pwd
id name password
mapper配置文件中改为:
<!--结果集映射-->
<resultMap id="UserMap" type="User">
<!--column:数据库中的字段 ; property:实体类中的属性-->
<result column="id" property="id"/><!--一样可以不写-->
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<!--resultMap中定义一个自己取得名字-->
<select id="getUserById" parameterType="int" resultMap="UserMap">
select * from mybatis.user where id=#{id}
</select>
resultMap
元素是 MyBatis 中最重要最强大的元素。ResultMap
最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们。 (数据库字段和实体类属性不一样才用)标签:三范式 设计 第三范式 null 文件中 优秀 新建 lang sql
原文地址:https://www.cnblogs.com/LiuOneZero/p/14467167.html