MyBatis使用annonation定義類(lèi)型映射的簡(jiǎ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)文章
Java基于遞歸和循環(huán)兩種方式實(shí)現(xiàn)未知維度集合的笛卡爾積算法示例
這篇文章主要介紹了Java基于遞歸和循環(huán)兩種方式實(shí)現(xiàn)未知維度集合的笛卡爾積算法,結(jié)合實(shí)例形式分析了Java使用遞歸與循環(huán)兩種方式實(shí)現(xiàn)未知維度集合的笛卡爾積相關(guān)概念、原理與操作技巧,需要的朋友可以參考下2017-12-12Spring MVC 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法
短信驗(yàn)證功能在各個(gè)網(wǎng)站應(yīng)用都非常廣泛,那么在springmvc中如何實(shí)現(xiàn)短信驗(yàn)證碼功能呢?今天小編抽時(shí)間給大家介紹下Spring MVC 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法,一起看看吧2016-09-09SpringBoot?整合RabbitMq?自定義消息監(jiān)聽(tīng)容器來(lái)實(shí)現(xiàn)消息批量處理
Spring Boot中提供了默認(rèn)的監(jiān)聽(tīng)器容器,但是有時(shí)候我們需要自定義監(jiān)聽(tīng)器容器,來(lái)滿(mǎn)足一些特殊的需求,比如批量獲取數(shù)據(jù),這篇文章主要介紹了SpringBoot?整合RabbitMq?自定義消息監(jiān)聽(tīng)容器來(lái)實(shí)現(xiàn)消息批量處理,需要的朋友可以參考下2023-04-04maven打包時(shí)候修改包名稱(chēng)帶上git版本號(hào)和打包時(shí)間方式
這篇文章主要介紹了maven打包時(shí)候修改包名稱(chēng)帶上git版本號(hào)和打包時(shí)間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤解決
這篇文章主要給大家介紹了關(guān)于java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-03-03圖解Eclipse j2ee開(kāi)發(fā)環(huán)境的搭建過(guò)程
這篇文章以圖文結(jié)合的方式介紹了Eclipse j2ee開(kāi)發(fā)環(huán)境的搭建過(guò)程,內(nèi)容很詳細(xì),每一個(gè)步驟都有對(duì)應(yīng)的操作截圖,需要的朋友可以參考下2015-08-08識(shí)別率很高的java文字識(shí)別技術(shù)
這篇文章主要為大家詳細(xì)介紹了識(shí)別率很高的java文字識(shí)別技術(shù),親測(cè),希望對(duì)大家有幫助,感興趣的小伙伴們可以參考一下2016-08-08分享幾個(gè)寫(xiě)簡(jiǎn)潔java代碼的小技巧
成為一個(gè)優(yōu)秀的Java程序員,有著良好的代碼編寫(xiě)習(xí)慣是必不可少的,下面這篇文章主要給大家介紹了關(guān)于寫(xiě)java代碼的小技巧,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02