Spring jdbcTemplate 查询语句预处理传值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring jdbcTemplate 查询语句预处理传值相关的知识,希望对你有一定的参考价值。
小白一枚,最近刚用Spring jdbcTemplate,之前都是使用JDBC预编译传值的方式进行数据库连接,目前已经能够成功执行语句了,但是不知道预编译的情况下应该怎么传值,如下:
@Resource(name = "jdbcTemplate")
private JdbcTemplate template;
public List<Map<String, String>> met_test()
String sql = "select * from user limit ?,?";// 查询那个表?
List<Map<String, String>> result = template.query(sql,new myRowMapper());
return result;
sql语句中有两个占位符,使用template应该怎么传值啊,同时query的第二个参数(myRowMapper implements RowMapper)是干什么用的?
Spring使用JdbcTemplate对象完成查询
查询银行账户的数量
1.建立一个项目导入jar包(ioc aop dao 连接池 数据库驱动 ),拷贝容器对应的配置文件到src下
2.在配置文件中开启组件扫描
3.写一个DAO接口定义一个查询方法
4.定义一个JdbcTemplate的成员变量
4.1在类上加@Repository标注
4.2注入JdbcTemplate,JdbcTemplate创建时要使用到dataSource
4.3使用模板完成查询
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:lang="http://www.springframework.org/schema/lang" 6 xmlns:mvc="http://www.springframework.org/schema/mvc" 7 xmlns:util="http://www.springframework.org/schema/util" 8 xmlns:task="http://www.springframework.org/schema/task" 9 xmlns:aop="http://www.springframework.org/schema/aop" 10 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 11 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd 12 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 13 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd 14 http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.1.xsd 15 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd 16 http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"> 17 <!-- 开启组件扫描 --> 18 <context:component-scan base-package="com.xcz"></context:component-scan> 19 <!-- 开启标注形式的mvc --> 20 <mvc:annotation-driven></mvc:annotation-driven> 21 <!-- 配置视图处理器 --> 22 <bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 23 <property name="prefix" value="/WEB-INF/"></property> 24 <property name="suffix" value=".jsp"></property> 25 </bean> 26 <!-- 引入外部资源 --> 27 <context:property-placeholder location="classpath:db.properties"/> 28 <!-- 配置数据源 --> 29 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 30 <property name="driverClassName" value="${driverClassName}"></property> 31 <property name="url" value="${url}"></property> 32 <property name="username" value="${jdbc.username}"></property> 33 <property name="password" value="${jdbc.password}"></property> 34 </bean> 35 <!-- 定义一个模板 --> 36 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 37 <constructor-arg index="0" ref="dataSource"></constructor-arg> 38 </bean> 39 </beans>
1 driverClassName=oracle.jdbc.OracleDriver 2 url=jdbc:oracle:thin:@127.0.0.1:1521:xe 3 jdbc.username= 4 jdbc.password= 5 maxActive=20
1 package com.xcz.dao; 2 3 public interface XdlBankAccountDao { 4 int getBankAccount(); 5 }
1 package com.xcz.impl; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.jdbc.core.JdbcTemplate; 5 import org.springframework.stereotype.Repository; 6 7 import com.xcz.dao.XdlBankAccountDao; 8 9 @Repository("bankDao") 10 public class XdlBankAccountImpl implements XdlBankAccountDao{ 11 @Autowired 12 private JdbcTemplate jdbcTemplate; 13 @Override 14 public int getBankAccount() { 15 String sql = "select count(1) from xdl_bank_account"; 16 return jdbcTemplate.queryForInt(sql); 17 } 18 }
1 package com.xcz.test; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 import com.xcz.dao.XdlBankAccountDao; 7 import com.xcz.impl.XdlBankAccountImpl; 8 9 public class TestXdlBankAccount { 10 public static void main(String[] args) { 11 ApplicationContext ioc = new ClassPathXmlApplicationContext("mvc.xml"); 12 XdlBankAccountDao count = ioc.getBean("bankDao", XdlBankAccountImpl.class); 13 System.out.println(count.getBankAccount()); 14 } 15 }
以上是关于Spring jdbcTemplate 查询语句预处理传值的主要内容,如果未能解决你的问题,请参考以下文章
Spring 的 JdbcTemplate 是不是在查询超时后关闭连接?