MyBatis使用annonation定义类型映射的简易用法示例
摘要
介绍如何使用annonation的方式定义数据库字段到Java成员变量直接的映射关系,以及定义数据库表中的类型到Java类型的自定义转换。关于如何配置MyBatis进行Java对象和Mysql表之间的映射可以参照 MyBatis 基本用法
简易用法
下面是一个最基础的映射关系配置:
public interface SimpleMapper { @Select("select url from testdb.MY_BATIS_TEST;") Set<Record> 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<Record> selectRecords(); }
定义类型映射
如果我们的support_os_version列是一个使用逗号分割的版本号里表,在Java中我们想映射到 String[] supportOSLevel
, 可以通过定义 typeHandler 的方式进行映射。
首先定义一个从String到String[]的转换类:
public class StringSplitHandler extends BaseTypeHandler<String[]> { 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<Record> selectRecords(); }
以上就是MyBatis使用annonation定义类型映射的简易用法示例的详细内容,更多关于MyBatis annonation类型映射的资料请关注脚本之家其它相关文章!
相关文章
Java8函数式接口java.util.function速查大全
因为Java8引入了函数式接口,在java.util.function包含了几大类函数式接口声明,这篇文章主要给大家介绍了关于Java8函数式接口java.util.function速查的相关资料,需要的朋友可以参考下2021-08-08Spring Boot + FreeMarker 实现动态Word文档导出功能
Spring Boot与FreeMarker的组合,为开发者提供了一个强大的平台,可以轻松实现动态Word文档的导出,本文将指导你如何使用Spring Boot与FreeMarker模板引擎,创建一个简单的应用,用于根据数据库数据动态生成Word文档并下载,感兴趣的朋友一起看看吧2024-06-06jenkins如何通过pipeline部署springboot项目
为了提高SpringBoot项目的部署效率和规范性,建议将项目代码和部署脚本分离,项目代码仓库专注业务逻辑,构建为jar包;另外设立独立代码仓库存放Jenkinsfile等部署配置文件,在Jenkins中配置pipeline,自动拉取项目代码进行构建和部署2024-09-09
最新评论