欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis使用annonation定義類(lèi)型映射的簡(jiǎn)易用法示例

 更新時(shí)間:2023年09月24日 10:54:27   作者:channingbj  
這篇文章主要介紹了MyBatis使用annonation定義類(lèi)型映射的簡(jiǎn)易用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

摘要

介紹如何使用annonation的方式定義數(shù)據(jù)庫(kù)字段到Java成員變量直接的映射關(guān)系,以及定義數(shù)據(jù)庫(kù)表中的類(lèi)型到Java類(lèi)型的自定義轉(zhuǎn)換。關(guān)于如何配置MyBatis進(jìn)行Java對(duì)象和Mysql表之間的映射可以參照 MyBatis 基本用法

簡(jiǎn)易用法

下面是一個(gè)最基礎(chǔ)的映射關(guān)系配置:

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

在默認(rèn)的配置中,mysql表的字段會(huì)映射到同名字的java成員變量,下面我們看如何設(shè)置映射到其他的變量,以及如何進(jìn)行類(lèi)型轉(zhuǎn)換

自定義映射關(guān)系

如果我們的DB中的一列名稱(chēng)是support_os_version類(lèi)型是VARCHAR,但是在Java代碼中對(duì)應(yīng)的變量是 String supportOSLevel,可以進(jìn)行如下定義:

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

定義類(lèi)型映射

如果我們的support_os_version列是一個(gè)使用逗號(hào)分割的版本號(hào)里表,在Java中我們想映射到 String[] supportOSLevel, 可以通過(guò)定義 typeHandler 的方式進(jìn)行映射。

首先定義一個(gè)從String到String[]的轉(zhuǎn)換類(lèi):

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(",");
        }
    }
}

然后在映射關(guān)系的定義中指定這個(gè)類(lèi)作為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定義類(lèi)型映射的簡(jiǎn)易用法示例的詳細(xì)內(nèi)容,更多關(guān)于MyBatis annonation類(lèi)型映射的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論