java 枚举 sql,MyBatis Java布尔值转换为Sql枚举

I am using MyBatis with MySql in my project.

I have:

myField ENUM('yes','no')

and I want to map in to java boolean value:

I know I can modify all mybatis templates, e.g.:

UPDATE

myTable

...

myField =

'yes'

'no'

,

...

WHERE

...

But can I do this in more convenient way?

解决方案

It seems the best way to solve this is to implement my own boolean type handler:

public class YesNoBooleanTypeHandler extends BaseTypeHandler {

@Override

public void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType)

throws SQLException {

ps.setString(i, convert(parameter));

}

@Override

public Boolean getNullableResult(ResultSet rs, String columnName)

throws SQLException {

return convert(rs.getString(columnName));

}

@Override

public Boolean getNullableResult(ResultSet rs, int columnIndex)

throws SQLException {

return convert(rs.getString(columnIndex));

}

@Override

public Boolean getNullableResult(CallableStatement cs, int columnIndex)

throws SQLException {

return convert(cs.getString(columnIndex));

}

private String convert(Boolean b) {

return b ? "yes" : "no";

}

private Boolean convert(String s) {

return s.equals("yes");

}

}

and then to use it in the mapper template:

UPDATE

myTable

...

myField = #{myField ,typeHandler=YesNoBooleanTypeHandler}

...

WHERE

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值