mybatis中幾種typeHandler的定義使用詳解
1.存儲(chǔ)到數(shù)據(jù)庫, 將LONG數(shù)組轉(zhuǎn)換成字符串;從數(shù)據(jù)庫獲取數(shù)據(jù), 將字符串轉(zhuǎn)為L(zhǎng)ONG數(shù)組
package com.winturn.utils.handler; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import com.winturn.utils.CommonJsonUtil; /** * <p>Class: ArrayLongTypeHandler.java</p> * <p>Description: 存儲(chǔ)到數(shù)據(jù)庫, 將LONG數(shù)組轉(zhuǎn)換成字符串; * 從數(shù)據(jù)庫獲取數(shù)據(jù), 將字符串轉(zhuǎn)為L(zhǎng)ONG數(shù)組. </p>*/ public class ArrayLongTypeHandler extends BaseTypeHandler<Object> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, CommonJsonUtil.stringify(parameter)); } @Override public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { return CommonJsonUtil.parse3(rs.getString(columnName), Object.class); } @Override public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return CommonJsonUtil.parse3(rs.getString(columnIndex), Object.class); } @Override public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return CommonJsonUtil.parse3(cs.getString(columnIndex), Object.class); } }
2.存儲(chǔ)到數(shù)據(jù)庫, 將基本數(shù)據(jù)數(shù)組轉(zhuǎn)換成字符串;從數(shù)據(jù)庫獲取數(shù)據(jù), 將字符串根據(jù)','拆分,轉(zhuǎn)為數(shù)組.
package com.winturn.utils.handler; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import com.winturn.utils.CommonJsonUtil; /** * <p>Class: ArrayStringTypeHandler.java</p> * <p>Description: 存儲(chǔ)到數(shù)據(jù)庫, 將基本數(shù)據(jù)數(shù)組轉(zhuǎn)換成字符串; * 從數(shù)據(jù)庫獲取數(shù)據(jù), 將字符串根據(jù)','拆分,轉(zhuǎn)為數(shù)組.</p> * * */ public class ArrayStringTypeHandler extends BaseTypeHandler<Object> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, CommonJsonUtil.stringify(parameter)); } @Override public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { return CommonJsonUtil.parse2(rs.getString(columnName), Object.class); } @Override public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return CommonJsonUtil.parse2(rs.getString(columnIndex), Object.class); } @Override public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return CommonJsonUtil.parse2(cs.getString(columnIndex), Object.class); } }
3.jsonarray 格式的字符串轉(zhuǎn)換為相應(yīng)的數(shù)組
package com.winturn.utils.handler; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import com.winturn.utils.CommonJsonUtil; /** * <p>Class: ArrayIntegerTypeHandler.java</p> * <p>Description: jsonarray 格式的字符串轉(zhuǎn)換為相應(yīng)的數(shù)組 </p> * */ public class JsonArrayTypeHandler extends BaseTypeHandler<Object> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, CommonJsonUtil.stringify(parameter)); } @Override public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { return CommonJsonUtil.parseJsonToArray(rs.getString(columnName), Object.class); } @Override public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return CommonJsonUtil.parseJsonToArray(rs.getString(columnIndex), Object.class); } @Override public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return CommonJsonUtil.parseJsonToArray(cs.getString(columnIndex), Object.class); } }
4.將Float類型的數(shù)組裝換成字符創(chuàng)進(jìn)行存儲(chǔ)
package com.winturn.utils.handler; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import com.winturn.utils.CommonJsonUtil; /** * <p>Filename:JsonFloatTypeHandler.java</p> * <p>Description: 將float類型數(shù)組裝換成字符串 </p> * */ public class JsonFloatTypeHandler extends BaseTypeHandler<Object> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, CommonJsonUtil.stringifyObject(parameter)); } @Override public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { return CommonJsonUtil.parseJsonToFloat(rs.getString(columnName), Object.class); } @Override public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return CommonJsonUtil.parseJsonToFloat(rs.getString(columnIndex), Object.class); } @Override public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return CommonJsonUtil.parseJsonToFloat(cs.getString(columnIndex), Object.class); } }
5.將map裝換成字符串存儲(chǔ)到數(shù)據(jù)庫,取出時(shí)將字符串裝換成map
package com.winturn.utils.handler; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.Map; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.codehaus.jackson.map.ObjectMapper; import com.winturn.exceptions.RolerServiceException; import com.winturn.utils.JsonMapUtil; /** * * @ClassName: JsonMapTypeHandler * @Description: 將map裝換成數(shù)組存儲(chǔ)數(shù)據(jù)庫,取出時(shí)將字符串裝換成map * @author sgl * @date 2015年12月21日 下午6:22:50 */ public class JsonMapTypeHandler extends BaseTypeHandler<Map<String, Object>> { ObjectMapper mapper = new ObjectMapper(); @Override public Map<String, Object> getNullableResult(ResultSet rs, String columnName) { try { String value = rs.getString(columnName); return mapper.readValue(value, Map.class); } catch (Exception e) { } return null; } @Override public Map<String, Object> getNullableResult(ResultSet rs, int columnIndex) throws SQLException { try { String value = rs.getString(columnIndex); return mapper.readValue(value, Map.class); } catch (Exception e) { } return null; } @Override public Map<String, Object> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { try { String value = cs.getString(columnIndex); return mapper.readValue(value, Map.class); } catch (Exception e) { } return null; } @Override public void setNonNullParameter(PreparedStatement ps, int i, Map<String, Object> parameter, JdbcType jdbcType) throws SQLException { if (parameter == null) { ps.setNull(i, Types.VARCHAR); } else { try { ps.setString(i, JsonMapUtil.getJsonStrByMap(parameter)); } catch (RolerServiceException e) { e.printStackTrace(); } } } }
到此這篇關(guān)于mybatis中幾種typeHandler的定義使用的文章就介紹到這了,更多相關(guān)mybatis typeHandler定義使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot自動(dòng)配置之自定義starter的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot自動(dòng)配置之自定義starter的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10SpringBoot2零基礎(chǔ)到精通之?dāng)?shù)據(jù)與頁面響應(yīng)
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開發(fā)的腳手架2022-03-03spring,mybatis事務(wù)管理配置與@Transactional注解使用詳解
這篇文章主要介紹了spring,mybatis事務(wù)管理配置與@Transactional注解使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07java客戶端線上Apollo服務(wù)端的實(shí)現(xiàn)
這篇文章主要介紹了java客戶端線上Apollo服務(wù)端的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08SpringBoot用JdbcTemplates訪問Mysql實(shí)例代碼
本篇文章主要介紹了SpringBoot用JdbcTemplates訪問Mysql實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05