b_xinjun1120 2022-03-21 16:21 采纳率: 0%
浏览 1071
已结题

mybatis 自定义 BaseTypeHandler 查询不起作用。

定义 ArrayJsonHandler

@MappedTypes(JSONArray.class)
@MappedJdbcTypes(JdbcType.OTHER)
public class ArrayJsonHandler extends BaseTypeHandler<JSONArray> {
    //设置非空参数
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, JSONArray parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i, String.valueOf(parameter.toJSONString()));
    }
    //根据列名,获取可以为空的结果
    @Override
    public JSONArray getNullableResult(ResultSet rs, String columnName) throws SQLException {
        System.out.println(columnName);
        String sqlJson = rs.getString(columnName);
        if (null != sqlJson){
            return JSONArray.parseArray(sqlJson);
        }
        return null;
    }
    //根据列索引,获取可以为空的结果
    @Override
    public JSONArray getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        String sqlJson = rs.getString(columnIndex);
        if (null != sqlJson){
            return JSONArray.parseArray(sqlJson);
        }
        return null;
    }

    @Override
    public JSONArray getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String sqlJson = cs.getString(columnIndex);
        if (null != sqlJson){
            return JSONArray.parseArray(sqlJson);
        }
        return null;
    }
}

定义 mapper

 <result column="imgs" property="imgs" jdbcType="OTHER" typeHandler="com.xxx.xxx.ArrayJsonHandler"/>

增删改都没问题 查询为null,断点 System.out.println(columnName);没有进入。

img

  • 写回答

3条回答 默认 最新

  • 一起随缘 2022-03-28 11:17
    关注
    获得0.60元问题酬金

    查看BaseTypeHandler是否注册成功,在使用的方法上启用debug模式,跟踪下代码流程,参考如下链接:
    https://juejin.cn/post/6844904004749787144

    评论

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 赞助了问题酬金5元 3月21日
  • 修改了问题 3月21日
  • 创建了问题 3月21日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度