Spring JDBCTemplate原理及使用实例

 更新时间:2020年03月30日 11:34:20   作者:.长卿  
这篇文章主要介绍了Spring JDBCTemplate原理及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一:JDBCTemplate简介

  Spring为各种持久化技术提供了简单操作的模板和回调API:

ORM持久化技术 模板类
原生JDBC org.springframework.jdbc.core.JdbcTemplate
Hibernate5.0 org.springframework.orm.hibernate5.HibernateTemplate
IBatis(MyBatis) org.springframework.orm.ibatis.SqlMapClientTemplate
JPA org.springfrmaework.orm.jpa.JpaTemplate

  其中,对于原生的JDBC编程,Spring提供了JDBCTemplate,对jdbc操作进行了一系列封装,使得jdbc编程更加简单。

二:引入jar包或添加依赖

  数据库驱动包则按需引入。

三:创建数据库连接配置文件

 jdbc.user=root
 jdbc.password=123456
 jdbc.driverClass=com.mysql.jdbc.Driver
 jdbc.jdbcUrl=jdbc\:......

四:Spring托管

在Spring配置文件中,注入dataSource,从配置文件中获取内容进行bean的初始化。

<context:property-placeholder location="classpath:db.properties"/> //指定数据库连接配置文件
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> //托管dataSource bean
  <property name="user" value="${jdbc.user}"></property> //获取配置文件内容对dataSource进行初始化
  <property name="password" value="${jdbc.password}"></property>
  <property name="driverClass" value="${jdbc.driverClass}"></property>
  <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> //托管jdbcTemplate,引用dataSource
  <property name="dataSource" ref="dataSource"></property>
</bean>

五:在代码中使用

  1:通过Spring配置文件启动IOC容器

//启动IoC容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

  2:在IOC容器获取jdbcTemplate实例

//获取IoC容器中JdbcTemplate实例
JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");

  3:使用jdbcTemplate调用方法执行数据库操作

  JdbcTemplate主要提供以下五大方法:

execute方法:可以用于执行任何SQL语句。

update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

query方法及queryForXXX方法:用于执行查询相关语句;

call方法:用于执行存储过程、函数相关语句。

  3.1)通过 update 进行插入

String sql="insert into user (name,deptid) values (?,?)";
int count= jdbcTemplate.update(sql, new Object[]{"caoyc",3});

  3.2)通过 update 进行修改

String sql="update user set name=?,deptid=? where id=?";
jdbcTemplate.update(sql,new Object[]{"zhh",5,51});

  3.3)通过 update 进行删除

String sql="delete from user where id=?";
jdbcTemplate.update(sql,51);

  3.4)批量插入、修改、删除

String sql="insert into user (name,deptid) values (?,?)";

List<Object[]> batchArgs=new ArrayList<Object[]>();
batchArgs.add(new Object[]{"caoyc",6});
batchArgs.add(new Object[]{"zhh",8});
batchArgs.add(new Object[]{"cjx",8});

jdbcTemplate.batchUpdate(sql, batchArgs);

六:在DAO层使用

  数据库操作一般结合ORM进行使用。

  1:首先定义实体类

package com.proc;

public class User {
  private Integer id;
  private String name;
  private Integer deptid;
  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 getDeptid() {
    return deptid;
  }
  public void setDeptid(Integer deptid) {
    this.deptid = deptid;
  }

  public String toString() {
    return "User [id=" + id + ", name=" + name + ", deptid=" + deptid + "]";
  }
}

  2:然后定义该实体类的DAO类

package com.proc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {

  @Autowired
  private JdbcTemplate jdbcTemplate;
  
  public User get(int id){
    String sql="select id,name,deptid from user where id=?";
    RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
    return jdbcTemplate.queryForObject(sql, rowMapper,id);
  }
}

  在DAO类中,定义对应实体实例的增删查改操作方法,在方法体中,使用jdbcTemplate。

  3:在service层,通过dao实例调用方法,执行数据操作。

UserDao userDao=(UserDao) ctx.getBean("userDao");
System.out.println(userDao.get(53));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Springboot详解实现食品仓库管理系统流程

    Springboot详解实现食品仓库管理系统流程

    这是一个使用Springboot开发的食品仓库管理系统,是为商家提供商品货物进销存的信息化管理系统,具有一个仓库管理系统该有的所有功能,感兴趣的朋友快来看看吧
    2022-06-06
  • IDEA断点调试,断点不起作用的解决

    IDEA断点调试,断点不起作用的解决

    这篇文章主要介绍了IDEA断点调试,断点不起作用的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • JAVA IO API使用详解

    JAVA IO API使用详解

    本文通过理论、用法、实例详细说明了JAVA IO的使用,大家参考其中的实例代码实现自己的JAVA IO程序
    2013-11-11
  • 基于SSM框架之个人相册示例代码

    基于SSM框架之个人相册示例代码

    本篇文章主要介绍了基于SSM框架之个人相册示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • java实现马踏棋盘游戏

    java实现马踏棋盘游戏

    这篇文章主要为大家详细介绍了java实现马踏棋盘游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 如何使用Spring AOP的通知类型及创建通知

    如何使用Spring AOP的通知类型及创建通知

    这篇文章主要给大家介绍了关于如何使用Spring AOP的通知类型及创建通知的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring AOP具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Spring中的依赖注入DI详解

    Spring中的依赖注入DI详解

    这篇文章主要介绍了Spring中的依赖注入DI详解,组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将依赖关系注入到组件之中,依赖注入的目的并非为软件系统带来更多功能,是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台,需要的朋友可以参考下
    2024-01-01
  • 解决@ServerEndpoint不能注入@Autowired的问题

    解决@ServerEndpoint不能注入@Autowired的问题

    这篇文章主要介绍了解决@ServerEndpoint不能注入@Autowired的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java ThreadLocal原理解析以及应用场景分析案例详解

    Java ThreadLocal原理解析以及应用场景分析案例详解

    这篇文章主要介绍了Java ThreadLocal原理解析以及应用场景分析案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Java中的注解详解(Annotation)

    Java中的注解详解(Annotation)

    文章介绍了Java中的注解,包括注解的定义、元注解、Java内置的三大注解、自定义注解、反射注解以及注解的作用,注解是一种特殊的标记,可以用于类、方法、字段等元素,用于提供元数据信息
    2025-03-03

最新评论