IDEASpring3:jdbcTemplate

news/2024/9/22 16:50:33/

1.jdbcTemplate
Spring中的数据库操作模板,可以整合其它框架,如mybatis
(1)对JDBC进行封装,使用jdbcTemplate可方便对数据库进行增删改查
2.准备工作
(1)引入依赖
mysql依赖、druid连接池、spring-jdbc依赖、Spring -tx依赖、
spring-orm依赖,用于spring整合其它框架依赖

    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.24</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>5.3.22</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.3.21</version></dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.12</version>
</dependency>

(2) 在Spring中配置连接池

   <!-- dataSource数据库连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="url" value=""></property><property name="username" value=""></property><property name="password" value=""></property><property name="driverClassName" value=""></property></bean>

(3)配置jdbcTemplate对象,注入DataSource

   <!-- jdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!-- 注入数据源dataSource1.ref引用一个已经存在的对象--><property name="dataSource" ref="dataSource"></property></bean>

(4)创建 service 类,创建 dao 类,在 dao 注入jdbcTemplate 对象
Service注入Dao,Dao的实现类注入jdbcTemplate

Dao注入连接池

package com.Dao;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoimpl implements BookDao{@Autowiredpublic JdbcTemplate jdbcTemplate;}

创建接口DAo

package com.Dao;public interface BookDao {
}

注入dao

package com.Server;import com.Dao.BookDao;
import com.Dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {//注入dao@Autowiredprivate BookDao bookDao;}

jdbcTemplate 操作数据库

1.对应数据库表创建实体类。

package com.entity;//创建数据库对应实体类。 
public class User {private String userid;private String username;private String ustatus;//状态public String getUserid() {return userid;}public void setUserid(String userid) {this.userid = userid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getUstatus() {return ustatus;}public void setUstatus(String ustatus) {this.ustatus = ustatus;}}

2.编写Service和Dao
(1)在Dao进行数据库添加操作。
①在Server方法中添加方法。
方法体中调用接口的add方法

@Service
public class BookService {//注入dao@Autowiredprivate BookDao bookDao;//添加方法public void addBook(Book book){bookDao.add(book);}
}

②在接口中添加add方法,并且在实现类中实现add方法。
在接口中添加add方法

public interface BookDao {//添加方法void add(Book book);
}

在实现类中实现add方法

 //添加方法,在实现类中实现public void add(Book book){}

(3)调用update方法实现添加操作
有两个参数
第一个参数:sql语句
第二个参数:可变参数

//添加方法,在实现类中实现public void add(Book book){//1.创建sql语句String sql="insert into t_book values(?,?,?)";//2.调用方法实现,第二个参数为可变参数,int update = jdbcTemplate.update(sql, book.getUserid(), book.getUsername(), book.getUstatus());System.out.println(update);}

(4)查询
查询返回某个值

   public int selectCount(Book book) {String sql="select count(*) from t_book";//两个参数1.sql语句,第二个参数为返回类型的class如integer.classInteger count = jdbcTemplate.queryForObject(sql, Integer.class);return count;}

查询返回对象

    public Book findBookInfo(String id) {String sql="select * from t_book where userid=?";//三个参数//1.sql语句2.RowMapper 3.sql语句?中的值//第二个参数中<>写兑现类型,()中写实现类型的.classBook book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);return book;}

查询返回集合

   @Overridepublic List<Book> findAllBook() {String sql="select * from t_book";//参数 1.sql语句2.RowMapper 3.sql语句?中的值//第二个参数中<>写兑现类型,()中写实现类型的.class,第三个参数可省略不写。//返回是list集合List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));return bookList;}

批量 修改操作
批量增加批量删除相同,仅仅sql语句变就行。

     @Overridepublic void batchUpdataBook(List<Object> batchArgs) {String sql="updata t_book set username=?,ustatus=?,where id=?";int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);}

http://www.ppmy.cn/news/5206.html

相关文章

Python 帮同事用pandas快速筛选Excel文件

同事正在为怎样处理一个18万行的全年财务Excel文件发愁&#xff0c;文件足足有30M&#xff0c;打开文件也要两三分钟&#xff0c;于是他就向我求助。大概意思就是要筛选出Data工作簿“源数据”Sheet中所有收款人对应的付款人及付款笔数、金额小计&#xff0c;于是我简化做了一个…

ffmpeg-AVPacket

目录 引子 翻译一下官方注释&#xff1a; 成员变量&#xff1a; AVBufferRef *buf pts dts data size stream_index flag side_data side_data_elems duration pos opaque opaque_ref time_base 引子 AVPacket是ffmpeg基础且非常重要的数据结构…

Android实现红绿灯检测(含Android源码 可实时运行)

Android实现红绿灯检测(含Android源码 可实时运行) 目录 Android实现红绿灯检测(含Android源码 可实时运行) 1. 前言 2. 红绿灯检测数据集说明 3. 基于YOLOv5的红绿灯检测模型训练 4.红绿灯检测模型Android部署 &#xff08;1&#xff09; 将Pytorch模型转换ONNX模型 &…

可解释机器学习笔记合集

​task01 导论 【学习打卡01】可解释机器学习之导论Task01 预备知识学习 ​task02 ZFNet 【学习打卡】ZFNet深度学习图像分类算法【学习打卡02】可解释机器学习笔记之ZFNet【算法】可解释机器学习-ZFNet&#xff08;Datawhale)Task02 【算法】ZFNet ​task03 CAM 【学习打…

Nginx-反向代理

什么是反向代理 用户直接访问反向代理服务器就可以获得目标服务器的资源。这一过程叫反向代理 如何配置反向代理 修改nginx配置文件 1.切换到nginx的conf路径下操作nginx的配置文件 cd /usr/local/openresty/nginx/conf 1.1防止修改错误可以先备份一下配置文件 cp nginx.…

“专利费用减缓”怎么申请?

在专利申请时&#xff0c;很多申请人对“专利费用减缓”的概念并不了解&#xff0c;或者不太清楚。甚至有很多申请人一听到专利申请可以请求费用减缓&#xff0c;就以为申请专利是不要钱的。当然&#xff0c;这样的理解就存在了很大的偏差了&#xff0c;所以&#xff0c;我们今…

NNDL 2022秋

第一届AI专业&#xff0c;很多课程都是第一次开课&#xff0c;老师和学生都在“摸着石头过河”。 好处是所学内容比较新&#xff0c;跟得上“潮流”&#xff0c;学习意愿比较强。 难处是教学资料相对欠缺&#xff0c;需要学的内容较多&#xff0c;难度较大。 大家经过一学期…

Java多线程-线程的创建(Thread类的基本使用)

文章目录一. 线程和Thread类1. 线程和Thread类1.1 Thread类的构造方法1.2 启用线程的相关方法2. 创建第一个Java多线程程序3. 使用Runnable对象创建线程4. 使用内部类创建线程5. 使用Lambada表达式创建线程6. 多线程并发执行简单演示7. 多线程并发执行的优势二. Thread类的属性…