摘要:摘要介紹如何使用的方式定義數(shù)據(jù)庫(kù)字段到成員變量直接的映射關(guān)系,以及定義數(shù)據(jù)庫(kù)表中的類(lèi)型到類(lèi)型的自定義轉(zhuǎn)換。首先定義一個(gè)從到的轉(zhuǎn)換類(lèi)然后在映射關(guān)系的定義中指定這個(gè)類(lèi)作為
摘要
介紹如何使用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;") SetselectRecords(); }
在默認(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定義類(lèi)型映射selectRecords(); }
如果我們的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{ 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), }) SetselectRecords(); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/17577.html
摘要:摘要介紹如何使用的方式定義數(shù)據(jù)庫(kù)字段到成員變量直接的映射關(guān)系,以及定義數(shù)據(jù)庫(kù)表中的類(lèi)型到類(lèi)型的自定義轉(zhuǎn)換。首先定義一個(gè)從到的轉(zhuǎn)換類(lèi)然后在映射關(guān)系的定義中指定這個(gè)類(lèi)作為 摘要 介紹如何使用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表之間的映射可以參照 ...
摘要:定義類(lèi)有兩種定義查詢(xún)結(jié)果到類(lèi)的映射關(guān)系的方式,一種是通過(guò)文件定義,一種是通過(guò)定義,這里使用第二種方法。 定義mapping類(lèi) MyBatis 有兩種定義查詢(xún)結(jié)果到 Java 類(lèi)的映射關(guān)系的方式,一種是通過(guò)xml文件定義,一種是通過(guò)Java annonation 定義,這里使用第二種方法?,F(xiàn)在我們有一張mysql的表定義如下: CREATE TABLE `MY_BATIS_TEST` (...
摘要:定義類(lèi)有兩種定義查詢(xún)結(jié)果到類(lèi)的映射關(guān)系的方式,一種是通過(guò)文件定義,一種是通過(guò)定義,這里使用第二種方法。 定義mapping類(lèi) MyBatis 有兩種定義查詢(xún)結(jié)果到 Java 類(lèi)的映射關(guān)系的方式,一種是通過(guò)xml文件定義,一種是通過(guò)Java annonation 定義,這里使用第二種方法?,F(xiàn)在我們有一張mysql的表定義如下: CREATE TABLE `MY_BATIS_TEST` (...
閱讀 2112·2023-04-26 01:33
閱讀 1728·2023-04-26 00:52
閱讀 1122·2021-11-18 13:14
閱讀 5861·2021-09-26 10:18
閱讀 2976·2021-09-22 15:52
閱讀 1558·2019-08-29 17:15
閱讀 3086·2019-08-29 16:11
閱讀 1089·2019-08-29 16:11