4、Mybatis查询语句列名和属性名不一致的解决方法

本文介绍了两种在Mybatis中处理查询结果列名与Java实体类属性名不一致的问题。方法一是通过ResultMap定义映射关系,分别指定列名和属性名的对应关系。方法二是利用resultType并使用列别名,使得列名与属性名保持一致。这两种方法都能确保查询数据能正确映射到对应的实体属性上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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; }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值