标签:映射 column 十八 id user MyBatis password 列名 select
在MyBatis的映射中有column这么一个属性,我一直以为它映射的是数据库表中的列名,但经过学习发现他似乎映射的是SQL语句中的列名,或者说是查询结果所得到的表的列名。
下面我们进行一个实验。
首先我们有一张user表:
我还有一个实体类User,有着id、username、password三个属性。
我们的UserMapper接口中有着获取这张表单所有数据的方法。
我们现在在UserMapper.mxl中这样写:
<select id="getUsers" resultType="User"> select * from mybaties.user </select>
或者这样写:
<select id="getUsers" resultType="User"> select id, username, password from mybaties.user </select>
这两句完全相同,我们去测试一下看看结果:
成功获取了所有信息。
现在给password起个别名pwd,在UserMapper.mxl中这样写:
<select id="getUsers" resultType="User"> select id, username, password as pwd from mybaties.user </select>
此时我们再去运行:
我们会发现password竟然变成了null。
此时我们去配置一个结果映射,让pwd映射到我们的属性password:
<resultMap id="um" type="User"> <result property="password" column="pwd"/> </resultMap> <select id="getUsers" resultMap="um"> select id, username, password as pwd from mybaties.user </select>
测试结果:
没有问题。
得出结论:映射到属性的字段名是查询结果的列名,而不是数据库中已存在的表的列名。
标签:映射,column,十八,id,user,MyBatis,password,列名,select 来源: https://www.cnblogs.com/jmsstudy/p/16698602.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。