spring使用jdbcTemplate和jdbcdaosupport和namedparameter
jdbcTemplate:
首先连接数据库
<!-- 导入外部文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property> </bean>
外部配置
driverClass=oracle.jdbc.OracleDriver
jdbcUrl=jdbc:oracle:thin:@192.168.1.105:1521:orcl
user=ems
password=123456
注意写URL的时候写本机的IP,写localhost的时候在Oracle数据库中服务的配置要写localhost
aaarticlea/png;base64,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" alt="" />
在aaarticlea/png;base64,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" alt="" />修改
连接测试的代码
public class JDBCTest { private ApplicationContext ctx=null;
private JdbcTemplate jdbcTemplate; {
ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");
}
@Test
//测试连接
public void testDataSource() throws SQLException{
DataSource dataSource=ctx.getBean(DataSource.class);
System.out.println(dataSource.getConnection());
} }
jdbcTemplate支持的五种方法:
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。
在xml中配置jdbcTemplate
<!-- 配置Spring的 jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
使用:
package com.spring.jdbc;
import java.sql.SQLException; import javax.sql.DataSource; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate; public class JDBCTest { private ApplicationContext ctx=null;
private JdbcTemplate jdbcTemplate; {
ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");
}
@Test
//测试连接
public void testDataSource() throws SQLException{
DataSource dataSource=ctx.getBean(DataSource.class);
System.out.println(dataSource.getConnection());
}
@Test
public void testUpdate(){
String sql="update employees set last_name=? where id=?";
jdbcTemplate.update(sql, "Jack",2);
}
}
批量修改:
//批量修改
@Test
public void testBatchUpdate(){
String sql="insert into employees(last_name,deptid) values(?,?)";
List<Object[]> batchArgs=new ArrayList<Object[]>();
batchArgs.add(new Object[]{"AA",1});
batchArgs.add(new Object[]{"BB",2});
jdbcTemplate.batchUpdate(sql,batchArgs);
}
NamedParameterJdbcTemplate:具名参数,该对象可以使用具名参数
配置bean
<!-- 配置NamedParameterJdbcTemplate 该对象可以使用具名参数,其没有无参数构造器,所以必须为构造器指定参数-->
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource"></constructor-arg>
</bean>
Java测试:
package com.spring.jdbc;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import javax.sql.DataSource; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; public class JDBCTest { private ApplicationContext ctx=null; private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
{
ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
namedParameterJdbcTemplate=ctx.getBean(NamedParameterJdbcTemplate.class);
}
@Test
public void testNamedParameterJdbcTemplate(){
String sql="insert into employees(id,last_name,email,deptid) values(:a,:ln,:email,:id)";
Map<String,Object> paramMap=new HashMap<String, Object>();
paramMap.put("a", 3);
paramMap.put("ln", "FF");
paramMap.put("email", "3@qq.com");
paramMap.put("id", 2);
namedParameterJdbcTemplate.update(sql, paramMap);
} }
改进:
public void testNamedParameterJdbcTemplate2(){
String sql="insert into employees(id,last_name,email,deptid) values(:id,:lastname,:email,:deptid)";
Employees employee=new Employees();
employee.setLastName("haha");
employee.setEmail("4@qq.com");
employee.setDeptId(5);
SqlParameterSource parameterSource=new BeanPropertySqlParameterSource(employee);
namedParameterJdbcTemplate.update(sql, parameterSource);
}
参数名就是对象的 属性。然后直接传入属性。
spring使用jdbcTemplate和jdbcdaosupport和namedparameter的更多相关文章
- spring使用JdbcTemplate和jdbcDaosupport及具名参数使用
关于jdbctemplate: 个人感觉比Java链接mysql那一套方便好维护多了,只需在配置文件维护即可 需要的包: com.springsource.net.sf.cglib-2.2.0.jar ...
- Spring_使用JdbcTemplate和JdbcDaoSupport
1.JdbcTemplate 简化 JDBC 模板查询 ①每次使用都创建一个 JdbcTemplate 的新实例, 这种做法效率很低下.②JdbcTemplate 类被设计成为线程安全的, 所以可以再 ...
- Spring利用JDBCTemplate实现批量插入和返回id
1.先介绍一下java.sql.Connection接口提供的三个在执行插入语句后可取的自动生成的主键的方法: //第一个是 PreparedStatement prepareStatement(St ...
- Spring 中jdbcTemplate 实现执行多条sql语句
说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...
- Spring之JDBCTemplate学习
一.Spring对不同的持久化支持: Spring为各种支持的持久化技术,都提供了简单操作的模板和回调 ORM持久化技术 模板类 JDBC org.springframework.jdbc.core. ...
- spring+spring mvc+JdbcTemplate 入门小例子
大家使用这个入门时候 最好能够去 搜一下 spring mvc 的 原理,我放一张图到这里,自己琢磨下,后面去学习就容易了 给个链接 (网上一把,千万不能懒) https://www.cnblo ...
- spring 学习(四): spring 的 jdbcTemplate 操作
spring 学习(四): spring 的 jdbcTemplate 操作 spring 针对 javaee 的每一层,都提供了相应的解决技术,jdbcTemplate 的主要操作在 dao 层. ...
- Spring的jdbcTemplate 与原始jdbc 整合c3p0的DBUtils 及Hibernate 对比 Spring配置文件生成约束的菜单方法
以User为操作对象 package com.swift.jdbc; public class User { private Long user_id; private String user_cod ...
- spring学习(四)spring的jdbcTemplate(增删改查封装)
Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的 ...
随机推荐
- EasyUI实现异步加载tree(整合Struts2)
首先jsp页面有一ul用于展现Tree <ul id="mytree"></ul> 加载Tree <script type="text/ja ...
- jQuery中的事件监听方式及异同点
jQuery中的事件监听方式及异同点 作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery&g ...
- jQuery LigerUI V1.2.2
jQuery LigerUI V1.2.2 (包括API和全部源码) 发布 前言 这次版本主要对树进行了加载性能上面的优化,并解决了部分兼容性的问题,添加了几个功能点. 欢迎使用反馈. 相关链接 AP ...
- ASP.NET Web API下的HttpController激活:程序集的解析
ASP.NET Web API下的HttpController激活:程序集的解析 HttpController的激活是由处于消息处理管道尾端的HttpRoutingDispatcher来完成的,具体来 ...
- Lucene.net入门学习系列(2)
Lucene.net入门学习系列(2) Lucene.net入门学习系列(1)-分词 Lucene.net入门学习系列(2)-创建索引 Lucene.net入门学习系列(3)-全文检索 在使用Luce ...
- 一个吊丝android个人开发者的逆袭之路
转眼间,一年多过去了,记得我开发第一款android应用的时候,那是在前年的冬天,我本人是做java的,android的学习和开发完全是业余爱好,从前年上半年到前年下半年大约花了半年的业余时间把and ...
- django User model
django User model operation this tutorial will guide us to know how to manipulate django User model. ...
- dede搜索引擎
1.dede模板中的html: <form action="{dede:fieldname='phpurl'/}/search.php" name="formsea ...
- android开发之res下的menu (xml+代码的形式)
转载请注明出处:http://blog.csdn.net/fth826595345/article/details/9199393 先来看Menu XML文件如何编写: <?xml versi ...
- Embedded Linux Primer----嵌入式Linux基础教程--导论
第一章 导论 在这一章里(将要学习到) 为什么是Linux 嵌入式Linux现状 开源和GPL(译者:通用公共许可证) 标准和有关团体 本章总结 放弃专有操作系统正在许多传统嵌入式操作系统公司引起一阵 ...