使用hibernate拦截sql语句并输出获取sql语句
来源:互联网 发布:徐老师的淘宝店二维码 编辑:程序博客网 时间:2024/05/17 23:30
使用Hibernate 拦截执行sql语句,并输出sql语句,获取sql语句
重建包名
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
转载请声明出处
阅读全文
0 0
- 使用hibernate拦截sql语句并输出获取sql语句
- mybatis 拦截器获取sql语句
- hibernate 直接使用 sql 语句
- Hibernate使用sql语句查询
- Hibernate使用sql语句查询
- Hibernate使用sql语句查询
- Hibernate使用原生SQL语句
- Hibernate使用原生SQL语句
- Hibernate使用sql语句查询
- 使用hibernate执行sql语句
- Hibernate使用sql语句查询
- Hibernate使用sql语句查询
- Hibernate使用sql语句查询
- 格式化Hibernate的SQL输出语句
- 让Hibernate输出SQL语句参数配置
- 格式化Hibernate的SQL输出语句
- hibernate中如何输出sql语句
- 让Hibernate输出SQL语句参数配置
- 我的第一篇博客
- LeetCode算法问题13 —— Search Insert Position
- Core2.0_EF_CodeFirst的使用
- 谈谈移动端屏幕适配的几种方法
- 分布式程序设计常见问题分析
- 使用hibernate拦截sql语句并输出获取sql语句
- HDU 1001Sum Problem (java)
- C语言运算符
- 理解Java对象序列化
- JPA
- 浮点数进位制转换器
- UUID的使用
- Eclipse创建Web项目
- C语言算术运算符