成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MyBatis 使用annonation定義類型映射

DrizzleX / 1482人閱讀

摘要:摘要介紹如何使用的方式定義數(shù)據(jù)庫字段到成員變量直接的映射關系,以及定義數(shù)據(jù)庫表中的類型到類型的自定義轉換。首先定義一個從到的轉換類然后在映射關系的定義中指定這個類作為

摘要

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

簡易用法

下面是一個最基礎的映射關系配置:

public interface SimpleMapper {
    @Select("select url from testdb.MY_BATIS_TEST;")
    Set 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 selectRecords();
}
定義類型映射

如果我們的support_os_version列是一個使用逗號分割的版本號里表,
在Java中我們想映射到 String[] supportOSLevel, 可以通過定義 typeHandler 的方式進行映射。

首先定義一個從String到String[]的轉換類:

public class StringSplitHandler extends BaseTypeHandler {

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

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/17577.html

相關文章

  • MyBatis 使用annonation定義類型映射

    摘要:摘要介紹如何使用的方式定義數(shù)據(jù)庫字段到成員變量直接的映射關系,以及定義數(shù)據(jù)庫表中的類型到類型的自定義轉換。首先定義一個從到的轉換類然后在映射關系的定義中指定這個類作為 摘要 介紹如何使用annonation的方式定義數(shù)據(jù)庫字段到Java成員變量直接的映射關系,以及定義數(shù)據(jù)庫表中的類型到Java類型的自定義轉換。關于如何配置MyBatis進行Java對象和Mysql表之間的映射可以參照 ...

    Drinkey 評論0 收藏0
  • MyBatis 基本用法

    摘要:定義類有兩種定義查詢結果到類的映射關系的方式,一種是通過文件定義,一種是通過定義,這里使用第二種方法。 定義mapping類 MyBatis 有兩種定義查詢結果到 Java 類的映射關系的方式,一種是通過xml文件定義,一種是通過Java annonation 定義,這里使用第二種方法。現(xiàn)在我們有一張mysql的表定義如下: CREATE TABLE `MY_BATIS_TEST` (...

    BearyChat 評論0 收藏0
  • MyBatis 基本用法

    摘要:定義類有兩種定義查詢結果到類的映射關系的方式,一種是通過文件定義,一種是通過定義,這里使用第二種方法。 定義mapping類 MyBatis 有兩種定義查詢結果到 Java 類的映射關系的方式,一種是通過xml文件定義,一種是通過Java annonation 定義,這里使用第二種方法?,F(xiàn)在我們有一張mysql的表定義如下: CREATE TABLE `MY_BATIS_TEST` (...

    Snailclimb 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<