重建包名
org.hibernate.type.descriptor.sql
重建类BasicBinder
代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package
org.hibernate.type.descriptor.sql;
import
java.sql.PreparedStatement;
import
java.sql.SQLException;
import
org.hibernate.internal.CoreLogging;
import
org.hibernate.type.descriptor.JdbcTypeNameMapper;
import
org.hibernate.type.descriptor.ValueBinder;
import
org.hibernate.type.descriptor.WrapperOptions;
import
org.hibernate.type.descriptor.java.JavaTypeDescriptor;
import
org.jboss.logging.Logger;
public
abstract
class
BasicBinder<J>
implements
ValueBinder<J>{
private
static
final
Logger log = CoreLogging.logger( BasicBinder.
class
);
private
static
final
String BIND_MSG_TEMPLATE =
"binding parameter [%s] as [%s] - [%s]"
;
private
static
final
String NULL_BIND_MSG_TEMPLATE =
"binding parameter [%s] as [%s] - [null]"
;
private
final
JavaTypeDescriptor<J> javaDescriptor;
private
final
SqlTypeDescriptor sqlDescriptor;
public
JavaTypeDescriptor<J> getJavaDescriptor() {
return
javaDescriptor;
}
public
SqlTypeDescriptor getSqlDescriptor() {
return
sqlDescriptor;
}
public
BasicBinder(JavaTypeDescriptor<J> javaDescriptor, SqlTypeDescriptor sqlDescriptor) {
this
.javaDescriptor = javaDescriptor;
this
.sqlDescriptor = sqlDescriptor;
}
@Override
public
final
void
bind(PreparedStatement st, J value,
int
index, WrapperOptions options)
throws
SQLException {
final
boolean
traceEnabled = log.isTraceEnabled();
if
( value ==
null
) {
if
( traceEnabled ) {
log.trace(
String.format(
NULL_BIND_MSG_TEMPLATE,
index,
JdbcTypeNameMapper.getTypeName( getSqlDescriptor().getSqlType() )
)
);
}
st.setNull( index, sqlDescriptor.getSqlType() );
}
else
{
if
( traceEnabled ) {
log.trace(
String.format(
BIND_MSG_TEMPLATE,
index,
JdbcTypeNameMapper.getTypeName( sqlDescriptor.getSqlType() ),
getJavaDescriptor().extractLoggableRepresentation( value )
)
);
}
doBind( st, value, index, options );
}
System.out.println(st.toString());
}
/**
* Perform the binding. Safe to assume that value is not null.
*
* @param st The prepared statement
* @param value The value to bind (not null).
* @param index The index at which to bind
* @param options The binding options
*
* @throws SQLException Indicates a problem binding to the prepared statement.
*/
protected
abstract
void
doBind(PreparedStatement st, J value,
int
index, WrapperOptions options)
throws
SQLException;
}
|
因为在hibernate机制中,就是用这个类是是执行更新插入sql语句的类,这里重写,把它覆盖
原文地址:https://www.cnblogs.com/bornteam/p/5068776.html
转载请声明出处