文档章节

spring NamedParameterJdbcTemplate

zvc888
 zvc888
发布于 2015/12/18 14:32
字数 300
阅读 92
收藏 2

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

<!-- 配置 C3P0 数据源 -->

<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>


<!-- 配置 NamedParameterJdbcTemplate, 该对象可以使用具名参数, 其没有无参数的构造器, 所以必须为其构造器指定参数 -->

<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource"></constructor-arg>
</bean>

public class JDBCTest {
private ApplicationContext ctx = null;
private JdbcTemplate jdbcTemplate;
private EmployeeDao employeeDao;
private DepartmentDao departmentDao;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
{
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
namedParameterJdbcTemplate = ctx.getBean(NamedParameterJdbcTemplate.class);
}
/**
 * 使用具名参数时, 可以使用 update(String sql, SqlParameterSource paramSource) 方法进行更新操作
 * 1. SQL 语句中的参数名和类的属性一致!
 * 2. 使用 SqlParameterSource 的 BeanPropertySqlParameterSource 实现类作为参数. 
 */
@Test
public void testNamedParameterJdbcTemplate2(){
String sql = "INSERT INTO employees(last_name, email, dept_id) "
+ "VALUES(:lastName,:email,:dpetId)";
Employee employee = new Employee();
employee.setLastName("XYZ");
employee.setEmail("xyz@sina.com");
employee.setDpetId(3);
SqlParameterSource paramSource = new BeanPropertySqlParameterSource(employee);
namedParameterJdbcTemplate.update(sql, paramSource);
}
/**
	 * 可以为参数起名字. 
	 * 1. 好处: 若有多个参数, 则不用再去对应位置, 直接对应参数名, 便于维护
	 * 2. 缺点: 较为麻烦. 
	 */
	@Test
	public void testNamedParameterJdbcTemplate(){
		String sql = "INSERT INTO employees(last_name, email, dept_id) VALUES(:ln,:email,:deptid)";
		
		Map<String, Object> paramMap = new HashMap<>();
		paramMap.put("ln", "FF");
		paramMap.put("email", "ff@atguigu.com");
		paramMap.put("deptid", 2);
		
		namedParameterJdbcTemplate.update(sql, paramMap);
	}
}


© 著作权归作者所有

zvc888
粉丝 5
博文 107
码字总数 17062
作品 0
深圳
程序员
私信 提问
spring jdbctemplate 项目使用完整记录

一、前言 项目使用jdbctemplate已经一段时间了,对于jdbcTemplate的使用有了一些小小心得,这里总结后跟大家分享下。 二、spring xml 配置jdbcTemplate 三、通过DBColumnMapper、泛型封装添加...

漂泊者及其影子
2015/05/27
275
0
spring - JdbcTemplate条件in的SQL写法

一般大家习惯的用法如下: public List<Map<String, Object>> queryByFundid(int fundId) { String sql = "SELECT * FROM t_freeze_detail WHERE fund_id = ? AND flag = ? AND freeze_state......

xiaomin0322
02/21
37
0
spring jdbc是如何实现驼峰和下划线的自动映射的

今天在看写代码的时候突然发现,在类和数据库字段之间没有做过任何的映射关系,但是数据会自动的映射好 以下是spring代码的具体实现直接贴代码 讲述映射实现的过程 关注下BeanPropertyRowMa...

时光流转
2018/07/10
31
0
spring--(23)具名参数

在上一篇中,jdbc的传参形式是 ?,如果参数比较多或者是参数的位置发生改变,则传参对应的位置也需要改变,十分的不方便。这篇中采用具名参数的形式传参,有效的解决了上述问题。 xml配置文...

求是科技
2016/09/04
40
0
spring 多线程调用service 获取不到连接

说明:代码使用spring3+Druid+ibatis;使用spring 自带线程池调用业务层jdbc操作,主要实现从oracle查询数据添加到mysql(没有用愚公,oracle是客户的库 给的账号只有查询数据的权限) 关键代码 1....

无知的小孩
2016/10/05
857
1

没有更多内容

加载失败,请刷新页面

加载更多

oracle查杀连接会话

由于频繁强制启停tomcat不清理连接等情况时可能导致oracle连接爆满,此时可以使用这个方式清理 --查询select sess.sid,sess.serial#,sess.machine,lo.oracle_username,lo.os_user_name,...

孑竹三秋
18分钟前
5
0
为什么互联网公司天天都在招人?

互联网公司招聘是很重要的环节,互联网公司离职率普遍较高,传统企业离职率较低,所以对于公司招聘是很重要的环节,同样一句“很重要”我看到许多人理解其程度实际上大相径庭。在很多互联网公...

码农突围
19分钟前
5
0
001-open-falcon的单机版安装

open-falcon 每台服务器,都有安装falcon-agent,falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标 单机安装 redis mkdir /home/redis && cd /home/redis...

伟大源于勇敢的开始
21分钟前
3
0
人工智能领跑的未来,智能CRM未来可期

现在,几乎每个技术预测故事都以同样的方式开始:人工智能AI正在开辟新的可能性。这种趋势同样发生在CRM领域中。 人工智能正在通过访问和分析来改变CRM。它正在通过添加语音助手、同时改善工...

怡海软件-CRM
22分钟前
3
0
mysql-5.7.28-linux-glibc2.12-x86_64配置(参考)

[client]socket                                            = /data/mysql/var/mysql.sockport                                         ...

Wybaron
26分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部