spring JdbcTemplate 利用 Log4j 在控制台打印出SQL语句、参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring JdbcTemplate 利用 Log4j 在控制台打印出SQL语句、参数相关的知识,希望对你有一定的参考价值。
如题,试了很多种方法,都是只能打出语句。不能打出参数来。所有在这里求教了。
需求:1.语句、参数可分开打印。2.JdbcTemplate 适用的。请各位大神不要百度,拿自己试验OK的给小弟
log4j.logger.org.springframework.jdbc.core=DEBUG, file
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=TRACE, file
用这两个就可以,这个好像是spring 2.5.*支持,再高的版本没试,只能打印出sql和参数,没有其它的说明,看的有些眼花~~ 参考技术A # Good for troubleshooting
log4j.logger.org.hibernate=debug
# Log JDBC parameters
log4j.logger.org.hibernate.type=debug
你去试试吧,不用谢我
spring中利用jdbctemplate操作数据库
在此就以查询所有学生信息为例:
实体类
public class Student {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
dao层
public interface IStudentDAO {
/**
* 查询所有
* @return
*/
public List<Student> findAll();
}
dao层实现
public class StudentDAOImpl extends JdbcDaoSupport implements IStudentDAO{
public List<Student> findAll() {
final String sql="select *from Student";
List<Student> list= this.getJdbcTemplate().query(sql, new RowMapper<Student>() {
/**
*
* @param resultSet 单条记录读取器
* @param i 索引
* @return
* @throws SQLException
*/
public Student mapRow(ResultSet resultSet, int i) throws SQLException {
Student student=new Student();
student.setId(resultSet.getInt("id"));
student.setName(resultSet.getString("name"));
student.setAge(resultSet.getInt("age"));
return student;
}
});
return list;
}
}
servie层接口
public interface IStudentService {
/**
* 查询所有
* @return
*/
public List<Student> findAll();
}
service层实现
public class StudentServiceImpl implements IStudentService{
//植入dao
private IStudentDAO dao;
public IStudentDAO getDao() {
return dao;
}
public void setDao(IStudentDAO dao) {
this.dao = dao;
}
//查询所有
public List<Student> findAll() {
return dao.findAll();
}
}
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///school
jdbc.username=root
jdbc.password=123156
配置applicationContextJdbdTempLate.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">
<!--1.识别jdbc.properties-->
<!--方式一-->
<!-- <context:property-placeholder location="jdbc.properties"></context:property-placeholder>-->
<!--方式二-->
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean>
<!--2.数据源 spring内置数据源 DriverManagerDataSource-->
<!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>-->
<!--数据源 bdcp-->
<!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>-->
<!--数据源 c3p0-->
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>-->
<!--数据源 driud 阿里巴巴-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!--jdbctemplate配置-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--dao层-->
<bean id="studentDao" class="cn.happy.jdbctemplate.dao.impl.StudentDAOImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!-- <!–dao层–>
<bean id="studentDao" class="cn.happy.jdbctemplate.dao.impl.StudentDAOImpl">
<property name="dataSource" ref="dataSource"></property>
</bean>-->
<!--service层-->
<bean id="studentService" class="cn.happy.jdbctemplate.service.impl.StudentServiceImpl">
<property name="dao" ref="studentDao"></property>
</bean></beans>
测试类
@Test
public void testJdbc(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContextJdbdTempLate.xml");
IStudentService student=(IStudentService)context.getBean("studentService");
List<Student> list = student.findAll();
for(Student item:list){
System.out.println(item.getName() +item.getAge());
}
}
以上是关于spring JdbcTemplate 利用 Log4j 在控制台打印出SQL语句、参数的主要内容,如果未能解决你的问题,请参考以下文章
spring JdbcTemplate 利用 Log4j 在控制台打印出SQL语句、参数
“spring JdbcTemplate”怎么利用Log4j在控制台打印出SQL语句、参数?
spring3: 对JDBC的支持 之 Spring提供的其它帮助 SimpleJdbcInsert/SimpleJdbcCall/SqlUpdate/JdbcTemplate 生成主键/批量处理(
Spring 从入门到精通系列 11—— Spring 中的 JdbcTemplate
框架 day37 Spring3,AOP,代理模式(动态/CGLIB/工厂bean),传统AOP,AspectJ框架(基于xml/注解),切入点表达式,jdbcTemplate