Spring JDBCTemplate的工作原理和具体应用案例是怎样的?

2026-05-26 06:441阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1025个文字,预计阅读时间需要5分钟。

Spring JDBCTemplate的工作原理和具体应用案例是怎样的?

一、JDBCTemplate简介Spring为各种持久化技术提供了持久化操作模板,JDBCTemplate是其中之一。它简化了数据库操作,提供了简单的模板和回调API。

二、JDBCTemplate使用

1.ORM持久化技术

2.模板类

3.原生JDBC

4.org.springframework.jdbc.core.JdbcTemplate

5.Hibernate5.0

6.org.springframework.orm.hibernate5.HibernateTemplate

一: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 JDBCTemplate的工作原理和具体应用案例是怎样的?

在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));

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

本文共计1025个文字,预计阅读时间需要5分钟。

Spring JDBCTemplate的工作原理和具体应用案例是怎样的?

一、JDBCTemplate简介Spring为各种持久化技术提供了持久化操作模板,JDBCTemplate是其中之一。它简化了数据库操作,提供了简单的模板和回调API。

二、JDBCTemplate使用

1.ORM持久化技术

2.模板类

3.原生JDBC

4.org.springframework.jdbc.core.JdbcTemplate

5.Hibernate5.0

6.org.springframework.orm.hibernate5.HibernateTemplate

一: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 JDBCTemplate的工作原理和具体应用案例是怎样的?

在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));

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