文章目录
- 1. 为什么需要类型转换模块
- 2. TypeHandler
1. 为什么需要类型转换模块
执行sql,在PreparedStatement设置参数时,需要把java类型转换成jdbc类型,而从结果集中获取数据时,需要把jdbc类型转换为java类型。
2. TypeHandler
所有类型转换器都继承这个接口。
public interface TypeHandler<T> {/*** 类型处理器:* JAVA类型 <------> JDBC类型* JAVA类型 ----> JDBC类型 写* JDBC类型 ----> JAVA类型 读* SQL操作:读 写* 负责将Java类型转换为JDBC的类型* 本质上执行的就是JDBC操作中的 如下操作* String sql = "SELECT id,user_name,real_name,password,age,d_id from t_user where id = ? and user_name = ?";* ps = conn.prepareStatement(sql);* ps.setInt(1,2);* ps.setString(2,"张三");* @param ps* @param i 对应占位符的 位置* @param parameter 占位符对应的值* @param jdbcType 对应的 jdbcType 类型* @throws SQLException*/void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException;/*** 从ResultSet中获取数据时会调用此方法,会将数据由JdbcType转换为Java类型* ResultSet rs = ps.executeQuery();* rs.next;* rs.getString(columnName);* rs.getInteger(columnIndex)** @param columnName Colunm name, when configuration <code>useColumnLabel</code> is <code>false</code>*/T getResult(ResultSet rs, String columnName) throws SQLException;T getResult(ResultSet rs, int columnIndex) throws SQLException;T getResult(CallableStatement cs, int columnIndex) throws SQLException;}