Mybatis——TypeHandler

 

使用mybatis时,一般情况下是不需要考虑数据库中的数据类型和java数据类型之间的转换的,因为有很多内置的TypeHandler帮助我们做了转换这件事,内置TypeHandler如下

上面都是mybatis内置的处理器,所以在平时开发的时候我们不用去关心java到数据库的类型转化关系,mybatis都帮我们把这些工作完成了。但这并不是我们要关心的重点,我们需要的是自定义TypeHandler去应对更多的需求。

本案例演示将List直接存入数据库中

 

自定义TypeHandler

新建一个Player对象

数据库表结构

要把Player中的List存到数据库中的varchar中,mybatis内置的TypeHandler是实现不了的,所以我们自定义TypeHandler.

第一步:实现 TypeHandler<T> 接口,T是 javaType -- jdbcType中的javaType,在本次案例中,T是List<String>

public class ListTypeHandler implements TypeHandler<List<String>> {

    public void setParameter(PreparedStatement preparedStatement, int i, List<String> strings, JdbcType jdbcType) throws SQLException {
        String join = StringUtils.join(strings, ",");
        preparedStatement.setString(i, join);
    }

    public List<String> getResult(ResultSet resultSet, String s) throws SQLException {
        return Arrays.asList(resultSet.getString(s).split(","));
    }

    public List<String> getResult(ResultSet resultSet, int i) throws SQLException {
        return Arrays.asList(resultSet.getString(i).split(","));
    }

    public List<String> getResult(CallableStatement callableStatement, int i) throws SQLException {
        String hobbys = callableStatement.getString(i);
        return Arrays.asList(hobbys.split(","));
    }
}

还可以添加自定义注解通过

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值