配置
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
global-config:
db-config:
column-underline: true
db-type: mysql
refresh: false
type-handlers-package: com.peony.common.typehandlers
自定义类型转换类
package com.peony.common.typehandlers;
import com.peony.common.util.Slog;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
/**
* @projectName: recorder
* @package: com.peony.common.typehandlers
* @className: MyDateTypeHandler
* @author: zy
* @description:
* @date: 2023-09-06 11:32
*/
public class MyDateTypeHandler extends BaseTypeHandler<LocalDateTime> {
/**
* 将java对象转为数据库对象进行存储
* @param preparedStatement
* @param i
* @param localDateTime
* @param jdbcType
* @throws SQLException
*/
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, LocalDateTime localDateTime, JdbcType jdbcType) throws SQLException {
// 将 LocalDateTime 转换为 ZonedDateTime
try{
if(localDateTime!=null){
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
// 将 ZonedDateTime 转换为 Date
Date date = (Date) Date.from(zonedDateTime.toInstant());
preparedStatement.setDate(i,date);
}
}catch (Exception e){
Slog.error(e.getMessage(),e);
}
}
/**
* 将数据库类型转为java类型
* @param resultSet
* @param s
* @return
* @throws SQLException
*/
@Override
public LocalDateTime getNullableResult(ResultSet resultSet, String s) throws SQLException {
Timestamp timestamp = resultSet.getTimestamp(s);
if(timestamp!=null){
java.util.Date date1 = new java.util.Date(timestamp.getTime());
return LocalDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault());
}
return null;
}
@Override
public LocalDateTime getNullableResult(ResultSet resultSet, int i) throws SQLException {
Timestamp timestamp = resultSet.getTimestamp(i);
if(timestamp!=null){
java.util.Date date1 = new java.util.Date(timestamp.getTime());
return LocalDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault());
}
return null;
}
@Override
public LocalDateTime getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
Timestamp timestamp = callableStatement.getTimestamp(i);
if(timestamp!=null){
java.util.Date date1 = new java.util.Date(timestamp.getTime());
return LocalDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault());
}
return null;
}
}
对应类型的字段就会走转换代码
private java.time.LocalDateTime workBeginDate;