Spring JDBCTemplate原理及使用实例

网友投稿 323 2023-06-16

Spring JDBCTemplate原理及使用实例

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的初始化。

//指定数据库连接配置文件

//托管dataSource bean

//获取配置文件内容对dataSource进行初始化

&lJJFbaPnt;property name="driverClass" value="${jdbc.driverClass}">

//托管jdbcTemplate,引用dataSource

五:在代码中使用

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

//启动IoC容器

ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

2:在IOC容器获取jdbcTemplate实例

//获取IoC容器中JdbcTemplate实例

JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");

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

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 batchArgs=new ArrayList();

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 rowMapper=new BeanPropertyRowMapper(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));

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot通过整合Dubbo解决@Reference注解问题
下一篇:基于springboot+jwt实现刷新token过程解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~