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类型映射的资料请关注脚本之家其它相关文章!

相关文章

  • Java8函数式接口java.util.function速查大全

    Java8函数式接口java.util.function速查大全

    因为Java8引入了函数式接口,在java.util.function包含了几大类函数式接口声明,这篇文章主要给大家介绍了关于Java8函数式接口java.util.function速查的相关资料,需要的朋友可以参考下
    2021-08-08
  • 初次体验MyBatis的注意事项

    初次体验MyBatis的注意事项

    今天给大家带来的是关于MyBatis的相关知识,文章围绕着MyBatis的用法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Spring Boot + FreeMarker 实现动态Word文档导出功能

    Spring Boot + FreeMarker 实现动态Word文档导出功能

    Spring Boot与FreeMarker的组合,为开发者提供了一个强大的平台,可以轻松实现动态Word文档的导出,本文将指导你如何使用Spring Boot与FreeMarker模板引擎,创建一个简单的应用,用于根据数据库数据动态生成Word文档并下载,感兴趣的朋友一起看看吧
    2024-06-06
  • springboot配合Thymeleaf完美实现遍历功能

    springboot配合Thymeleaf完美实现遍历功能

    Thymeleaf显然是一个开发页面的技术,现在各种前端技术层出不穷,比如现在主流的Vue、React、AngularJS等。这篇文章主要介绍了springboot配合Thymeleaf完美实现遍历,需要的朋友可以参考下
    2021-09-09
  • Spring Security实现分布式系统授权方案详解

    Spring Security实现分布式系统授权方案详解

    这篇文章主要介绍了Spring Security实现分布式系统授权,本节完成注册中心的搭建,注册中心采用Eureka,本文通过示例代码图文相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • java 数据结构中栈结构应用的两个实例

    java 数据结构中栈结构应用的两个实例

    这篇文章主要介绍了java 数据结构中栈结构应用的两个实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java编程获取经纬度之间距离的方法

    Java编程获取经纬度之间距离的方法

    这篇文章主要介绍了Java编程获取经纬度之间距离的方法,涉及Java数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Java标识接口的使用方法

    Java标识接口的使用方法

    在本篇文章中小编给大家分享了关于Java标识接口的使用方法和教程内容,有需要的朋友们学习下。
    2019-01-01
  • springboot植入pagerHelper的超详细教程

    springboot植入pagerHelper的超详细教程

    这篇文章主要介绍了springboot植入pagerHelper的超详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • jenkins如何通过pipeline部署springboot项目

    jenkins如何通过pipeline部署springboot项目

    为了提高SpringBoot项目的部署效率和规范性,建议将项目代码和部署脚本分离,项目代码仓库专注业务逻辑,构建为jar包;另外设立独立代码仓库存放Jenkinsfile等部署配置文件,在Jenkins中配置pipeline,自动拉取项目代码进行构建和部署
    2024-09-09

最新评论