MyBatis使用resultMap映射结果集、MyBatis解决对象属性名和数据库字段名不一致

一、MyBatis自动映射功能

1.MyBatis提供了自动映射功能,只需要返回的SQL列名和Java实体对象属性一致就行了。在我们实际开发中,我的数据库列名规范大都是要求每个单词用下划线分隔,而JAVA实体则是用驼峰命名法,于是使用MyBatis自动映射,或直接在配置文件中开启驼峰命名方式。

2.例如

实体对象属性如下

public class Account{

    private String id;

    private String name;

    private double money;

    private Date created = new Date();

    private Date updated = new Date();

    private Integer isdeleted = 0;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public Date getUpdated() {
        return updated;
    }

    public void setUpdated(Date updated) {
        this.updated = updated;
    }

    public Integer getIsdeleted() {
        return isdeleted;
    }

    public void setIsdeleted(Integer isdeleted) {
        this.isdeleted = isdeleted;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", money=" + money +
                ", created=" + created +
                ", updated=" + updated +
                ", isdeleted=" + isdeleted +
                '}';
    }
}

数据库表列名:

 mapper映射语句:

<select id="sel" resultType="yuan.yuanmybatis.entity.Account">
       select id,name,created,updated,isdeleted from account where id = #{id}
    </select>

Dao接口:

@Repository
public interface AccountMapper {

    Account sel(String id);
}

 测试:

 @Test
    public void testResultMap(){
       Account account= accountMapper.sel("1");
        System.out.println(account.toString());
    }

 

二、Mybatis使用resultMap映射结果集

1、当需要处理复杂的映射时,使用MyBatis的自动映射就力不从心了,这时候我们就可以使用resultMap了。

2、如下

<resultMap id="BaseResultMap" type="yuan.yuanmybatis.entity.Account">
        <id column="id" jdbcType="VARCHAR" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="money" jdbcType="DOUBLE" property="money" />
    </resultMap>

   <select id="sel" resultMap="accountResultMap">
       select id,name,money from account where id = #{id}
    </select>

解释一下resultMap的配置

2.1、id为定义了一个唯一标识,type对应的java实体对象

2.2、id表情定义java实体id即主键,result标签定义java实体对象其他属性,column属性为数据库列名,property属性为对应的java实体对象属性名

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用Mybatis创建resultMap映射是很简单的,你只需要在映射文件中使用<resultMap>标签即可。例如: ``` <resultMap id="userMap" type="User"> <id column="id" property="id" /> <result column="username" property="username" /> <result column="password" property="password" /> </resultMap> ``` 这里我们创建了一个为"userMap"的resultMap,它映射了一个为"User"的实体类。其中,<id>标签表示实体类中的主键属性,<result>标签则表示实体类中的普通属性。 要创建一个查询语句,使用这个resultMap,你只需要在<select>标签中引用这个resultMap即可。例如: ``` <select id="selectUser" resultMap="userMap"> SELECT id, username, password FROM user WHERE id = #{id} </select> ``` 这里我们创建了一个为"selectUser"的查询语句,它使用了前面定义的"userMap"作为结果映射。这个查询语句将返回一个id等于指定值的用户对象。 ### 回答2: 使用MyBatis创建resultMap可以通过以下步骤实现: 1. 在MyBatis的配置文件(通常是`mybatis-config.xml`)中配置typeAliases,用于将Java类别映射到SQL结果中的列。例如: ``` <typeAliases> <typeAlias type="com.example.User" alias="User"/> </typeAliases> ``` 2. 在映射文件(通常是`mapper.xml`)中创建resultMap元素。resultMap用于定义Java对象和SQL结果之间的映射关系。例如: ``` <resultMap id="userMap" type="User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> </resultMap> ``` 在上面的例子中,`id`属性将Java对象的`id`字段与SQL结果中的`id`列进行映射;`name`和`age`属性分别映射到对应的列。 3. 在映射文件中使用resultMap引用已创建的resultMap。例如: ``` <select id="getUserById" resultMap="userMap"> SELECT id, name, age FROM user WHERE id = #{id} </select> ``` 在上面的例子中,`getUserById`是一个查询语句,它使用了之前创建的`userMap` resultMap。 通过以上步骤,我们可以使用MyBatis创建resultMap来实现Java对象和SQL结果之间的映射关系,从而方便地操作数据库。 ### 回答3: 使用MyBatis创建结果映射ResultMap)是为了将查询结果中的列映射到Java对象属性上。通过创建ResultMap,可以方便地将数据库中的数据封装到Java对象中。 下面是使用MyBatis创建ResultMap的步骤: 1. 在mybatis-config.xml文件中配置MyBatis的数据源和其他相关配置。 2. 在映射文件(Mapper)中编写SQL语句,包括查询语句以及对应的列。 3. 在映射文件中通过<ResultMap>标签创建ResultMap,指定Java对象的类型以及与数据库列的映射关系。 示例代码如下: <resultMap id="userMap" type="com.example.User"> <id property="id" column="user_id"/> <result property="username" column="user_name"/> <result property="age" column="user_age"/> </resultMap> 在上面的代码中,id属性指定了Java对象属性,column属性指定了数据库中对应的列。 4. 在映射文件中使用<select>标签进行查询操作,并在标签内使用<resultMap>指定ResultMap的id。 示例代码如下: <select id="getUser" resultMap="userMap"> SELECT * FROM user WHERE user_id = #{id} </select> 在上面的代码中,resultMap属性指定了ResultMap的id,即userMap。 通过以上步骤,就成功创建了一个ResultMap映射查询结果到Java对象中。 需要注意的是,这只是最基本的创建ResultMap的示例,实际开发中还可以使用其他一些高级特性来处理复杂的映射逻辑,比如使用association和collection等标签来处理一对一和一对多的关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值