Spring_jdbc数据连接池(mysql实现增、删、改、查)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Spring_jdbc数据连接池(mysql实现增、删、改、查)

数据库连接池

连接Spring和Mysql,充当一个转换容器,临时存储原生的mysql语句操作

增删改查功能设计

思路
  • 创建接口及实现类
  • 创建数据库层的class
  • 创建外部类调用接口功能

JdbcTemplate方法

update函数

update(String sql,Object … args)

  • sql语句
  • 可变参数设置语句值(传递给?)
queryForObject函数

queryForObject(String sql,Class requiredType)

  • sql语句
  • 返回的类型class
    查询表里面有多少条记录,返回是某个值
    queryForObject返回查询对象
    queryForObject(String sql,RowMspper rowMapper,Object… args)
  • sql语句
  • RowMsppper接口
  • 可变参数

配置数据连接池

导入需要的依赖jar包

配置数据库连接池

<!--    数据库连接池 阿里 mysql-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close">
        <property name="url" value="jdbc:mysql://localhost:3306/jdbctest?useUnicode=true&amp;characterEncoding=utf8" />
        <property name="username" value="root" />
        <property name="password" value="password" />
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    </bean>
<!--    jdbc template对象注入-->
    <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--        注入datasource-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
<!--组件扫描-->
    <context:component-scan base-package="service,entity,dao">
    </context:component-scan>

创建与数据库表对应的类(entity)

创建一个book类对应mysql中的bookuser表

package entity;
public class Book {
    private String username,userpassword;
    private int id;
    public void setUsername(String username) {
        this.username = username;
    }
    public void setUserpassword(String userpassword) {
        this.userpassword = userpassword;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public String getUserpassword() {
        return userpassword;
    }
    public int getId() {
        return id;
    }
}

配置接口及实现类(interface)

接口

接口定义数据库表的增、删、改、查方法

package dao;
import entity.Book;
public interface BookDao {
    public  void add(Book book);//添加book表数据
    public void updatebook(Book book);//修改表数据
    public void deletebook(Book book);//删除数据
    public int selecCount();//查询数据库
}

接口实现类

实现接口的方法

package dao;
import entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class BookDaoImpl implements BookDao {
    @Autowired
    public JdbcTemplate jdbctemplate;
    @Override
    public void add(Book book) {
        String sql="insert into bookuser values(?,?,?)";//原生语句 添加数据 ?为参数的传输
        Object[] args={book.getUsername(),book.getUserpassword(),book.getId()};
        int update=jdbctemplate.update(sql,args);//成功返回1
        System.out.println(update);
    }
    @Override
    public void updatebook(Book book) {
        String sql="update bookuser set username=?,userpassword=? where id=?";//原生语句 修改数据
        Object[] args={book.getUsername(),book.getUserpassword(),book.getId()};//只修改用户名使用get
        int update=jdbctemplate.update(sql,args);
        System.out.println(update);
    }
    @Override
    public void deletebook(Book book) {
        String sql="delete from bookuser where id=?";//原生语句 删除数据
        Object[] args={book.getId()};
        int update=jdbctemplate.update(sql,args);
        System.out.println(update);
    }
    @Override
    public int selecCount() {
        String sql="select count(*) from bookuser";
        Integer count=jdbctemplate.queryForObject(sql,Integer.class);//第二个参数为返回的类型
        return count;
    }
}

调用接口功能(service)

package service;
import dao.BookDao;
import entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
//自动注解把类名的首字母小写
public class BookService {
    @Autowired
    private BookDao bookdao;
    public void addBook(Book book)
    {
        bookdao.add(book);//添加
    }
    public void updateBook(Book book)
    {
        bookdao.updatebook(book);//更新
    }
    public void deleteBook(Book book)
    {
        bookdao.deletebook(book);//删除
    }
    public void selectCount()
    {
        bookdao.selecCount();//返回查询的结果
    }
}

main方法中实现

ApplicationContext context4=new ClassPathXmlApplicationContext("bean06.xml");
        BookService jdbc=context4.getBean("bookService",BookService.class);//自动注解
        System.out.println(jdbc);//已执行
        Book user01=new Book();//添加的数据
        user01.setUsername("yma16");
        user01.setUserpassword("password");
        user01.setId(666);//条件
        jdbc.addBook(user01);//实现接口
        System.out.println("insert成功!");
        Book user02=new Book();//修改的数据
        user02.setUsername("修改的用户名");
        user02.setUserpassword("修改的密码");
        user02.setId(666);//条件
        jdbc.updateBook(user02);//实现修改的接口
        System.out.println("update成功!");
        //查询的数据
        jdbc.selectCount();//实现查询的接口
        System.out.println("查询成功!");

增、删、改、查测试成功!

查看mysql中的bookuser表已更新!

代码:我的github仓库

end


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
4月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
259 0
|
6月前
|
人工智能 运维 Java
SpringBoot+MySQL实现动态定时任务
这是一个基于Spring Boot的动态定时任务Demo,利用spring-context模块实现任务调度功能。服务启动时会扫描数据库中的任务表,将任务添加到调度器中,并通过固定频率运行的ScheduleUpdater任务动态更新任务状态和Cron表达式。核心功能包括任务的新增、删除与Cron调整,支持通过ScheduledFuture对象控制任务执行。项目依赖Spring Boot 2.2.10.RELEASE,使用MySQL存储任务信息,包含任务基类ITask及具体实现(如FooTask),便于用户扩展运维界面以增强灵活性。
230 10
|
3月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
315 10
|
4月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
133 0
|
7月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
344 28
|
7月前
|
监控 Java 关系型数据库
Spring Boot整合MySQL主从集群同步延迟解决方案
本文针对电商系统在Spring Boot+MyBatis架构下的典型问题(如大促时订单状态延迟、库存超卖误判及用户信息更新延迟)提出解决方案。核心内容包括动态数据源路由(强制读主库)、大事务拆分优化以及延迟感知补偿机制,配合MySQL参数调优和监控集成,有效将主从延迟控制在1秒内。实际测试表明,在10万QPS场景下,订单查询延迟显著降低,超卖误判率下降98%。
329 5
|
6月前
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
188 0
|
9月前
|
Java 关系型数据库 MySQL
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
2285 45
|
8月前
|
存储 SQL 关系型数据库
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为&#39;0&#39;或&#39;1&#39;,查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。

推荐镜像

更多