博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis 使用annonation定义类型映射
阅读量:6243 次
发布时间:2019-06-22

本文共 2364 字,大约阅读时间需要 7 分钟。

摘要

介绍如何使用annonation的方式定义数据库字段到Java成员变量直接的映射关系,以及定义数据库表中的类型到Java类型的自定义转换。关于如何配置MyBatis进行Java对象和Mysql表之间的映射可以参照

简易用法

下面是一个最基础的映射关系配置:

public interface SimpleMapper {    @Select("select url from testdb.MY_BATIS_TEST;")    Set
selectRecords();}

在默认的配置中,mysql表的字段会映射到同名字的java成员变量,下面我们看如何设置映射到其他的变量,以及如何进行类型转换

自定义映射关系

如果我们的DB中的一列名称是support_os_version类型是VARCHAR,但是在Java代码中对应的变量是 String supportOSLevel,可以进行如下定义:

public interface SimpleMapper {    @Select("select url from testdb.MY_BATIS_TEST;")    @Results(value = {            @Result(property = "support_os_version", column = "supportOSLevel"),    })    Set
selectRecords();}

定义类型映射

如果我们的support_os_version列是一个使用逗号分割的版本号里表,

在Java中我们想映射到 String[] supportOSLevel, 可以通过定义 typeHandler 的方式进行映射。

首先定义一个从String到String[]的转换类:

public class StringSplitHandler extends BaseTypeHandler
{ private static final Joiner joiner = Joiner.on(","); @Override public void setNonNullParameter(PreparedStatement preparedStatement, int i, String[] strings, JdbcType jdbcType) throws SQLException { preparedStatement.setString(i, joiner.join(strings)); } @Override public String[] getNullableResult(ResultSet resultSet, String columnName) throws SQLException { String data = resultSet.getString(columnName); if(StringUtils.isEmpty(data)) { return new String[0]; } else { return data.split(","); } } @Override public String[] getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException { String data = resultSet.getString(columnIndex); if(StringUtils.isEmpty(data)) { return new String[0]; } else { return data.split(","); } } @Override public String[] getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException { String data = callableStatement.getString(columnIndex); if(StringUtils.isEmpty(data)) { return new String[0]; } else { return data.split(","); } }}

然后在映射关系的定义中指定这个类作为typeHandler

public interface SimpleMapper {    @Select("select url from testdb.MY_BATIS_TEST;")    @Results(value = {            @Result(property = "support_os_version", column = "supportOSLevel", typeHandler = StringSplitHandler.class),    })    Set
selectRecords();}

转载地址:http://sopia.baihongyu.com/

你可能感兴趣的文章
回顾我的三年前端|掘金技术征文
查看>>
如何保障微服务架构下的数据一致性?
查看>>
开源框架和开源项目
查看>>
算法学习之路|二分图的最大匹配—匈牙利算法(Dfs实现)
查看>>
iOS UIView高级动画 关键帧动画
查看>>
java版spring cloud+spring boot+redis多租户社交电子商务平台 (六)分布式配置中心(Spring Cloud Config)...
查看>>
一个初学者是如何制作移动端B站画友社区的
查看>>
互联网分布式微服务云平台规划分析--平台整体规划
查看>>
Swift对象转为C指针
查看>>
Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)
查看>>
ThinkSNS系统升级,版本多样化
查看>>
ecshop使用smtp发送邮件
查看>>
RubyInstaller
查看>>
21. SQL -- TSQL架构,系统数据库,文件,SQL 认证,TSQL语句
查看>>
CentOS6.0添加163和epel源
查看>>
使用组策略与脚本发布Office 2010
查看>>
Open××× 分配固定IP
查看>>
elk+redis centos6.6安装与配置
查看>>
linux下svn命令大全
查看>>
windows server 2008 在vm上安装
查看>>