MyBatis使用annonation定义类型映射的简易用法示例

 更新时间:2023年09月24日 10:54:27   作者:channingbj  
这篇文章主要介绍了MyBatis使用annonation定义类型映射的简易用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

摘要

介绍如何使用annonation的方式定义数据库字段到Java成员变量直接的映射关系,以及定义数据库表中的类型到Java类型的自定义转换。关于如何配置MyBatis进行Java对象和Mysql表之间的映射可以参照 MyBatis 基本用法

简易用法

下面是一个最基础的映射关系配置:

public interface SimpleMapper {
    @Select("select url from testdb.MY_BATIS_TEST;")
    Set<Record> selectRecords();
}

在默认的配置中,mysql表的字段会映射到同名字的java成员变量,下面我们看如何设置映射到其他的变量,以及如何进行类型转换

自定义映射关系

如果我们的DB中的一列名称是support_os_version类型是VARCHAR,但是在Java代码中对应的变量是 String supportOSLevel,可以进行如下定义:

public interface SimpleMapper {
    @Select("select url from testdb.MY_BATIS_TEST;")
    @Results(value = {
            @Result(property = "support_os_version", column = "supportOSLevel"),
    })
    Set<Record> selectRecords();
}

定义类型映射

如果我们的support_os_version列是一个使用逗号分割的版本号里表,在Java中我们想映射到 String[] supportOSLevel, 可以通过定义 typeHandler 的方式进行映射。

首先定义一个从String到String[]的转换类:

public class StringSplitHandler extends BaseTypeHandler<String[]> {
    private static final Joiner joiner = Joiner.on(",");
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, String[] strings, JdbcType jdbcType) throws SQLException {
        preparedStatement.setString(i, joiner.join(strings));
    }
    @Override
    public String[] getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
        String data = resultSet.getString(columnName);
        if(StringUtils.isEmpty(data)) {
            return new String[0];
        } else {
            return data.split(",");
        }
    }
    @Override
    public String[] getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
        String data = resultSet.getString(columnIndex);
        if(StringUtils.isEmpty(data)) {
            return new String[0];
        } else {
            return data.split(",");
        }
    }
    @Override
    public String[] getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException {
        String data = callableStatement.getString(columnIndex);
        if(StringUtils.isEmpty(data)) {
            return new String[0];
        } else {
            return data.split(",");
        }
    }
}

然后在映射关系的定义中指定这个类作为typeHandler

public interface SimpleMapper {
    @Select("select url from testdb.MY_BATIS_TEST;")
    @Results(value = {
            @Result(property = "support_os_version", column = "supportOSLevel", typeHandler = StringSplitHandler.class),
    })
    Set<Record> selectRecords();
}

以上就是MyBatis使用annonation定义类型映射的简易用法示例的详细内容,更多关于MyBatis annonation类型映射的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot中的配置类(@Configuration)

    SpringBoot中的配置类(@Configuration)

    这篇文章主要介绍了SpringBoot中的配置类(@Configuration),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 如何使用SpringBoot集成Kafka实现用户数据变更后发送消息

    如何使用SpringBoot集成Kafka实现用户数据变更后发送消息

    Spring Boot集成Kafka实现用户数据变更后,向其他厂商发送消息,我们需要考虑配置Kafka连接、创建Kafka Producer发送消息、监听用户数据变更事件,并将事件转发到Kafka,本文分步骤给大家讲解使用SpringBoot集成Kafka实现用户数据变更后发送消息,感兴趣的朋友一起看看吧
    2024-07-07
  • 带你了解Java数据结构和算法之二叉树

    带你了解Java数据结构和算法之二叉树

    这篇文章主要为大家介绍了Java数据结构和算法之二叉树,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Kibana的安装和配置全过程

    Kibana的安装和配置全过程

    Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们将介绍如何安装和配置Kibana
    2024-12-12
  • springMVC如何对输入数据校验实现代码

    springMVC如何对输入数据校验实现代码

    数据的校验是交互式网站一个不可或缺的功能,数据验证分为客户端验证和服务器端验证,这篇文章主要介绍了springMVC如何对输入数据校验,需要的朋友可以参考下
    2020-10-10
  • Java线程死锁代码详解

    Java线程死锁代码详解

    本篇文章主要介绍了Java线程死锁代码详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-11-11
  • 基于Ok+Rxjava实现断点续传下载

    基于Ok+Rxjava实现断点续传下载

    这篇文章主要为大家详细介绍了基于Ok+Rxjava实现断点续传下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Java开发JUC交换器Exchanger使用详解

    Java开发JUC交换器Exchanger使用详解

    这篇文章主要为大家介绍了Java开发JUC交换器Exchanger使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • sprng和struts有什么区别?

    sprng和struts有什么区别?

    Spring和Struts都是近年来比较流行的框架,Struts主要用于表示层,Spring用于业务层,以及Hiberate主要用于持久层,
    2015-06-06
  • Java使用validation拦截非法提交的数据的方法实现

    Java使用validation拦截非法提交的数据的方法实现

    这篇文章主要介绍了Java使用validation拦截非法提交的数据,包含依赖引入、实体类注解配置、控制器@Valid/@Validated使用规范,具有一定的参考价值,感兴趣的可以了解一下
    2025-07-07

最新评论