你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.apache.ibatis.type.baseTypeHandler, 然后可以选择性地将它映射到一个JDBC类型。例如需求:一个Java中的Date数据类型,我想将之存到数据库的时候存成一个1970年至今的毫秒数,取出来时转换成java的Date,即java的Date与数据库的varchar毫秒值之间转换。
自定义类型转换步骤:
定义转换类继承类baseTypeHandler
覆盖4个未实现的方法,其中setNonNullParameter为java程序设置数据到数据库的回调方法,getNullableResult为查询时 mysql的字符串类型转换成 java的Type类型的方法
在MyBatis核心配置文件中进行注册
测试转换是否正确
定义转换类继承类baseTypeHandler
public class DateTypeHandler extends baseTypeHandler{ @Override // 将Java类型转换成数据库需要的类型 // int参数 字段索引 public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException { long time = date.getTime(); preparedStatement.setLong(i,time); } //将数据库中的类型转换成Java类型 @Override // String参数 要转换的字段名称 // ResultSet参数 结果集 public Date getNullableResult(ResultSet resultSet, String s) throws SQLException { long aLong = resultSet.getLong(s); Date date = new Date(aLong); return date; } //将数据库中的类型转换成Java类型 @Override public Date getNullableResult(ResultSet resultSet, int i) throws SQLException { long aLong = resultSet.getLong(i); Date date = new Date(aLong); return date; } //将数据库中的类型转换成Java类型 @Override public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException { long aLong = callableStatement.getLong(i); Date date = new Date(aLong); return date; } }
在MyBatis核心配置文件中进行注册
plugins标签
MyBatis可以使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据
开发步骤:
导入通用PageHelper的坐标
在mybatis核心配置文件中配置PageHelper插件
测试分页数据获取
导入通用PageHelper的坐标
com.github.pagehelper
pagehelper
3.7.5
com.github.jsqlparser
jsqlparser
0.9.1
在mybatis核心配置文件中配置PageHelper插件
测试分页数据获取
// 分页
PageHelper.startPage(1,2);
List all = mapper.findAll();
for (User user : all) {
System.out.println(user);
}



