Mybatis中,映射mysql中的JSON字段
短信预约 -IT技能 免费直播动态提醒
数据库mysql中的的某一个字段,存放的是一个List
的集合,需要将字段对应到entity的某一个参数上,mapper.xml中使用
的方式直接进行字段映射时,会出现java.lang.IllegalStateException: No typehandler found for property abnormalEigenList
,具体的错误:
java.lang.IllegalStateException: No typehandler found for property abnormalEigenListat org.apache.ibatis.mapping.ResultMapping$Builder.validate(ResultMapping.java:151)at org.apache.ibatis.mapping.ResultMapping$Builder.build(ResultMapping.java:140)at org.apache.ibatis.builder.MapperBuilderAssistant.buildResultMapping(MapperBuilderAssistant.java:446)at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildResultMappingFromContext(XMLMapperBuilder.java:393)at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:280)at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:254)at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:246)at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:119)
这时,我们需要定义一个类,对该json字符串进行转义:
import com.alibaba.fastjson.JSONException;import com.alibaba.fastjson.JSONObject;import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;import java.util.ArrayList;import java.util.List;public class JsonHandler extends JacksonTypeHandler { public JsonHandler (Class<?> type) { super(type); } @Override protected List<String> parse(String json) { List<String> jsons = new ArrayList<>(); try { jsons = JSONObject.parseArray(json, String.class); } catch (JSONException e) { jsons.add(JSONObject.parseObject(json, String.class)); } return jsons; }}
在mapper.xml中,需要在字段映射时加入typeHandler,具体:
来源地址:https://blog.csdn.net/github_38924695/article/details/131501276
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341