Mybatis查询语句列名和属性名不一致的解决方法
方法一
ResultMap
//resultMap定义映射关系
List<User> selectAllUser();
<!--使用resultMap
1)先定义resultMap
id:自定义的名称,表示你定义的这个resultMap
type:java类型的全限定名称
2)在select标签,使用resultMap来引用1定义
-->
<resultMap id="StudentMap" type="com.example.entity.User">
<!--列名和Java属性之间的关系-->
<!--主解列,使用id标签
column:属性名
property:Java类型的属性名-->
<id column="id" property="Userid"></id><!--主键列-->
<!--非主键列,使用的是result-->
<result column="name" property="Username"></result>
<result column="pwd" property="Userpwd"></result>
</resultMap>
<select id="selectAllUser" resultMap="StudentMap">
select id,name,pwd from user
</select>
将数据库id指定给Userid、name指定给Username、pwd指定给Userpwd;否则虽然能查到,但是无法正常使用。
方法二
列名和属性名不一样
List<UserModel> seletDiffColProperty();
<!-- resultType的默认原则是,同名的列值赋值给同名的属性,使用列别名-->
<select id="seletDiffColProperty" resultType="UserModel">
select id as Userid,name as Username,pwd as Userpwd from user
</select>
UserModel类
public class UserModel {
private Integer Userid;
private String Username;
private String Userpwd;
@Override
public String toString() {
return "UserModel{" +
"Userid=" + Userid +
", Username='" + Username + '\'' +
", Userpwd='" + Userpwd + '\'' +
'}';
}
public Integer getUserid() {
return Userid; }
public void setUserid(Integer userid) {
Userid = userid;}
public String getUsername() {
return Username;}
public void setUsername(String username) {
Username = username; }
public String getUserpwd() {
return Userpwd;}
public void setUserpwd(String userpwd) {
Userpwd = userpwd; }
}