JdbcTemplate模板提供操作数据库的方法应用,下面我们来说一下它的用法(注意:建议大家结合Spring API文档学习效果更好,因为下面的代码只是“抱砖引玉”

1. 遵循常见的数据库操作(增,删,改,查),我们可以把JdbcTemplate的功能应用大致分成下几种

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句
  • update方法:update方法用于执行新增、修改、删除等语句
  • batchUpdate方法:用于执行批处理相关语句
  • query方法、queryForXXX方法:用于执行查询相关语句
  • call方法:用于执行存储过程、函数相关语句

2. queryForXXX方法

introwCount = this.jdbcTemplate.queryForInt("select count(0) from t_accrual"); //返回一个int值

intcountOfActorsNamedJoe = this.jdbcTemplate.queryForInt(
"select count(0) from t_actors where first_name = ?", new Object[]{"Joe"}); //通过参数的绑定来返回int值 String surname = (String) this.jdbcTemplate.queryForObject(
"select surname from t_actor where id = ?",
new Object[]{new Long(1212)}, String.class); //返回一个String类型 Actor actor = (Actor) this.jdbcTemplate.queryForObject(
"selectfirst_name, surname from t_actor where id = ?",
new Object[]{new Long(1212)},
new RowMapper() {
public Object mapRow(ResultSetrs, introwNum) throws SQLException {
Actor actor = new Actor();
       actor.setFirstName(rs.getString("first_name"));
       actor.setSurname(rs.getString("surname"));
return actor;
}
}); //返回一个domain对象(JavaBean对象)

2. update方法

this.jdbcTemplate.update(
"insert into t_actor (first_name, surname) values (?, ?)",
new Object[] {"Leonor", "Watling"}); //插入操作 this.jdbcTemplate.update(
"updatet_actor set weapon = ? where id = ?",
new Object[] {"Banjo", new Long(5276)}); //更新操作 this.jdbcTemplate.update(
"delete from actor where id = ?",
new Object[] {new Long.valueOf(actorId)}); //删除操作

3. execute方法

this.jdbcTemplate.execute("create table mytable (id integer, name varchar(100))"); //执行一个DDL语句

4. 批量SQL语句操作

@Repository
public class JdbcActorDao { @Autowried
private JdbcTemplatejdbcTemplate; public int[] batchUpdate(final List actors) {
int[] updateCounts = jdbcTemplate.batchUpdate(
"updatet_actor set first_name = ?, last_name = ? where id = ?",
new BatchPreparedStatementSetter() {
public void setValues(PreparedStatementps, int i) throws SQLException {
      ps.setString(1, ((Actor)actors.get(i)).getFirstName());
      ps.setString(2, ((Actor)actors.get(i)).getLastName());
      ps.setLong(3, ((Actor)actors.get(i)).getId().longValue());
} public intgetBatchSize() {
return actors.size();
}
} );
return updateCounts;
} }

5. JdbcDaoSupport支持类应用,它需要让Dao层中的类去继承。然后就可以在Dao层中不用去定义JdbcTemplate,但是在Dao层中的类还是需要依赖注入DataSource

package com.spring.dao;

import java.util.List;
import java.util.Map; import org.springframework.jdbc.core.support.JdbcDaoSupport; public class SpringJdbcDao extends JdbcDaoSupport { public void getTbUsers() {
String sql = "select * from tb_user";
List<Map> list = getJdbcTemplate().queryForList(sql);
for (Map m : list) {
System.out.println(m.get("USER_ID")+"\t"+m.get("USER_NAME"));
}
}
}
<bean id="springjdbcdao" class="com.spring.dao.SpringJdbcDao">
<property name="dataSource" ref="dataSource"></property>
</bean>

[刘阳Java]_JdbcTemplate用法_第11讲的更多相关文章

  1. [刘阳Java]_Spring入门_第1讲

    Spring框架在企业中的使用非常多,优势明显.所以学好Spring框架肯定不言而喻.今天我们给大家介绍Spring的入门 1. 对于初学者来说我们要学习Spring框架中的哪些技术,这个有必要了解一 ...

  2. [刘阳Java]_MyBatis_动态SQL标签用法_第7讲

    1.MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. 2.MyBatis中用于实现动态SQL的元素主要有 if choose(when,otherwi ...

  3. [刘阳Java]_MyBatis_常规标签的用法_第6讲

    一般MyBatis最基本标签,或者说初学者上手最快的标签就是增删改查 1.<insert>标签,在MyBatis中完成数据添加操作 <insert id="addMyUse ...

  4. [刘阳Java]_MyBatis_注解基本用法_第10讲

    MyBatis注解提出,可以说是非常好简化了MyBatis配置文件的使用.下面我们简单地来告诉大家如何使用MyBatis的注解 定义接口 package com.gxa.dao; import jav ...

  5. [刘阳Java]_MyBatis_映射文件的select标签入门_第3讲

    1.Mybatis映射文件的<select>标签主要帮助我们完成SQL语句查询功能,<select>标签它包含了很多属性,下面简单对<select>标签的属性做一个 ...

  6. [刘阳Java]_什么是MyBatis_第1讲

    1.什么MyBatis,我们先通过百度百科先进行一个简单的了解 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation ...

  7. [刘阳Java]_为什么要前后端分离

    前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多 ...

  8. [刘阳Java]_MySQL数据优化总结_查询备忘录

    数据库优化是在后端开发中必备技能,今天写一篇MySQL数据优化的总结,供大家看看 一.MySQL数据库优化分类 我们通过一个图片形式来看看数据优化一些策略问题 不难看出,优化有两条路可以选择:硬件与技 ...

  9. [刘阳Java]_纯CSS代码实现内容过滤效果

    继续我们技术专题课,我们今天给大家带来的是一个比较酷炫的"纯CSS代码实现内容过滤效果",没有加入任何JS的效果.全部都是应用CSS3的新增选择器来实现的.先看效果截图 实现思路 ...

随机推荐

  1. HDR sensor 原理介绍

    HDR sensor 原理介绍 一. HDR sensor 原理介绍 1. 什么是sensor的动态范围(dynamic range): sensor的动态范围就是sensor在一幅图像里能够同时体现 ...

  2. GPU上的快速光谱图分区

    GPU上的快速光谱图分区 图形是用于对物理,生物,社会和信息系统中许多类型的关系和过程进行建模的数学结构.用于解决各种高性能计算和数据分析问题.对于网络分析,基因组学,社交网络分析和其他领域,大规模图 ...

  3. 激光雷达lidar与点云数据

    激光雷达lidar与点云数据 DEM是分布和显示数字地形的首个广泛使用的机制. 点云是在空间中随机放置的3D点的集合.传感器发出能量脉冲并乘以其返回行程(TWTT,双向行程时间).知道了传感器的位置以 ...

  4. 嵌入式C程序基础与编程结构

    嵌入式C程序基础与编程结构 Basics of Embedded C Program and Programming Structure 嵌入式C编程是处理器在我们日常生活中遇到的每一个嵌入式系统(如 ...

  5. 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解

    目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...

  6. 使用BootstrapVue相关组件,构建Vue项目界面

    基于Vue的前端框架有很多,Element算一个,而BootstrapVue也可以非常不错的一个,毕竟Bootstrap也是CSS中的大佬级别的,它和Vue的整合,使得开发起来更加方便了.Bootst ...

  7. Markdown个人常用语法

    Markdown实用格式 标题 # 标题一级 ## 标题二级 ### 标题三级 #### 标题四级 ##### 标题五级 ###### 标题六级 粗体.斜体和删除线 **加粗字体** *斜体字体* * ...

  8. 使用IDEA创建Maven项目

    一.创建一个普通的Maven项目 1.启动IDEA 2.创建一个Maven项目 3.Maven的目录结构 二.使用模板创建一个MavenWeb项目 1.启动IDEA 2.创建一个MavenWeb项目 ...

  9. JVM面试题(史上最强、持续更新、吐血推荐)

    文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...

  10. vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)

    文章很长,建议收藏起来,慢慢读! 备注:持续更新中..... 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 + 涨薪必备 疯 ...