MyBatis使用annonation定義類型映射的簡易用法示例
摘要
介紹如何使用annonation的方式定義數(shù)據(jù)庫字段到Java成員變量直接的映射關(guān)系,以及定義數(shù)據(jù)庫表中的類型到Java類型的自定義轉(zhuǎn)換。關(guān)于如何配置MyBatis進(jìn)行Java對象和Mysql表之間的映射可以參照 MyBatis 基本用法
簡易用法
下面是一個最基礎(chǔ)的映射關(guān)系配置:
public interface SimpleMapper { @Select("select url from testdb.MY_BATIS_TEST;") Set<Record> selectRecords(); }
在默認(rèn)的配置中,mysql表的字段會映射到同名字的java成員變量,下面我們看如何設(shè)置映射到其他的變量,以及如何進(jìn)行類型轉(zhuǎn)換
自定義映射關(guān)系
如果我們的DB中的一列名稱是support_os_version類型是VARCHAR,但是在Java代碼中對應(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(); }
定義類型映射
如果我們的support_os_version列是一個使用逗號分割的版本號里表,在Java中我們想映射到 String[] supportOSLevel
, 可以通過定義 typeHandler 的方式進(jìn)行映射。
首先定義一個從String到String[]的轉(zhuǎn)換類:
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)系的定義中指定這個類作為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定義類型映射的簡易用法示例的詳細(xì)內(nèi)容,更多關(guān)于MyBatis annonation類型映射的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java基于遞歸和循環(huán)兩種方式實現(xiàn)未知維度集合的笛卡爾積算法示例
這篇文章主要介紹了Java基于遞歸和循環(huán)兩種方式實現(xiàn)未知維度集合的笛卡爾積算法,結(jié)合實例形式分析了Java使用遞歸與循環(huán)兩種方式實現(xiàn)未知維度集合的笛卡爾積相關(guān)概念、原理與操作技巧,需要的朋友可以參考下2017-12-12Spring MVC 中 短信驗證碼功能的實現(xiàn)方法
短信驗證功能在各個網(wǎng)站應(yīng)用都非常廣泛,那么在springmvc中如何實現(xiàn)短信驗證碼功能呢?今天小編抽時間給大家介紹下Spring MVC 中 短信驗證碼功能的實現(xiàn)方法,一起看看吧2016-09-09SpringBoot?整合RabbitMq?自定義消息監(jiān)聽容器來實現(xiàn)消息批量處理
Spring Boot中提供了默認(rèn)的監(jiān)聽器容器,但是有時候我們需要自定義監(jiān)聽器容器,來滿足一些特殊的需求,比如批量獲取數(shù)據(jù),這篇文章主要介紹了SpringBoot?整合RabbitMq?自定義消息監(jiān)聽容器來實現(xiàn)消息批量處理,需要的朋友可以參考下2023-04-04java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯誤解決
這篇文章主要給大家介紹了關(guān)于java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯誤的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來一起看看吧。2017-03-03圖解Eclipse j2ee開發(fā)環(huán)境的搭建過程
這篇文章以圖文結(jié)合的方式介紹了Eclipse j2ee開發(fā)環(huán)境的搭建過程,內(nèi)容很詳細(xì),每一個步驟都有對應(yīng)的操作截圖,需要的朋友可以參考下2015-08-08