目录
- 1. 自定义日期类型处理器
- 2. 配置自定义日期处理器
- 3. 新增,查询
1. 自定义日期类型处理器
继承mybatis提供的BaseTypeHandler覆写方法,
来转换Java和数据库中的字段
package cn.bitqian.config;import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;/*** 日期类型处理器* 将日期类型转换为long/long转换为util.date* 将Util.date 转换为数据库中的bigint(long)* @author echo lovely* @date 2020/9/11 21:15*/
public class DateTypeHandler extends BaseTypeHandler<Date> {// util.date ==> 插入数据库中的变为bigint类型@Overridepublic void setNonNullParameter(PreparedStatement preparedStatement,int i, Date date, JdbcType jdbcType) throws SQLException {if (date != null) {long time = date.getTime();preparedStatement.setLong(i, time);}}// 下面三个重载 用于查询数据库中的字段,转换为日期@Overridepublic Date getNullableResult(ResultSet resultSet, String s) throws SQLException {System.out.println("obj========" + resultSet.getObject(s));long birthdayTime = resultSet.getLong(s);if (birthdayTime != 0)return new Date(birthdayTime);return null;}@Overridepublic Date getNullableResult(ResultSet resultSet, int i) throws SQLException {long birthdayTime = resultSet.getLong(i);System.out.println(birthdayTime);if (birthdayTime != 0)return new Date(birthdayTime);return null;}@Overridepublic Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {long birthdayTime = callableStatement.getLong(i);if (birthdayTime != 0)return new Date(birthdayTime);return null;}
}
2. 配置自定义日期处理器
<!-- 指定额、日期类型处理器 --><typeHandlers><typeHandler handler="cn.bitqian.config.DateTypeHandler"/></typeHandlers>
3. 新增,查询
// 测试新增 日期转换为长整型@Testpublic void test1() {SqlSession session = getSession();if (session != null) {UserMapper mapper = session.getMapper(UserMapper.class);User user = new User(null, "lucy", "999", new Date());int count = mapper.save(user);System.out.println(count);session.close();}}@Testpublic void test2() {SqlSession session = getSession();if (session != null) {UserMapper mapper = session.getMapper(UserMapper.class);// long int -> util.dateSystem.out.println(mapper.selectUserById(6));session.close();}}
log4j debug如下
- 你可能需要动态sql
- mapper接口用于curd