案例09 基于JdbcTemplate的学生信息维护案例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 使用Spring JdbcTemplate实现学生信息的新增、修改、删除、查询单个、查询所有功能,并实现MySQL数据库的操作。

 使用Spring JdbcTemplate实现学生信息的新增、修改、删除、查询单个、查询所有功能,并实现MySQL数据库的操作。

学生信息,有主键、姓名、年龄信息。

1. 数据初始化

    • 创建student数据库
    create database student default charset utf8 collate utf8_general_ci;

    image.gif

      • 创建t_student表
      createtable t_student ( id varchar(32)notnull, name varchar(255), age int);

      image.gif

        • 初始化数据
        insertinto t_student values("1","lucy",19);insertinto t_student values("2","lili",20);

        image.gif

        2. 创建项目

        创建Java项目,项目名称为spring-jdbc。

        3. 导入Spring相关jar包

        spring-jdbc项目下创建lib目录,在lib目录下导入Jar包:

          • 核心包

          spring-core-5.3.25.jar、

          spring-beans-5.3.25.jar、

          spring-context-5.3.25.jar、

          spring-expression-5.3.25.jar

            • AOP包

            spring-aop-5.3.25.jar

              • 数据库包

              spring-jdbc-5.3.25.jar

              spring-tx-5.3.25.jar

              mysql-connector-java-8.0.27.jar

              druid-1.2.8.jar

                • 测试包

                junit-4.6.jar

                  • 依赖包

                  commons-logging-1.2.jar

                  4. 创建Spring配置文件

                  src下创建applicationContext.xml文件。

                  <?xmlversion="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--开启注解--><context:component-scanbase-package="com.wfit"/><!--配置数据源--><beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"><!--mysql驱动--><propertyname="driverClassName"value="com.mysql.cj.jdbc.Driver"/><!--连接数据库的url--><propertyname="url"value="jdbc:mysql://localhost:3306/student"/><!--用户名--><propertyname="username"value="root"/><!--密码--><propertyname="password"value="123456"/></bean><!--配置JdbcTemplate--><beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><!--注入dataSource--><propertyname="dataSource"ref="dataSource"/></bean></beans>


                  5. 创建Student实体类

                  src目录下创建com.wfit.entity包,此包目录下目录下创建Student.java类。

                  publicclassStudent {
                  //主键idprivateStringid;
                  //姓名privateStringname;
                  //年龄privateintage;
                  publicStringgetId() {
                  returnid;
                      }
                  publicvoidsetId(Stringid) {
                  this.id=id;
                      }
                  publicStringgetName() {
                  returnname;
                      }
                  publicvoidsetName(Stringname) {
                  this.name=name;
                      }
                  publicintgetAge() {
                  returnage;
                      }
                  publicvoidsetAge(intage) {
                  this.age=age;
                      }
                  @OverridepublicStringtoString() {
                  return"Student{"+"id='"+id+'\''+", name='"+name+'\''+", age="+age+'}';
                      }
                  }


                  6. 创建StudentDao类

                  src目录下创建com.wfit.dao包,此包目录下目录下创建StudentDao.java类。

                  @RepositorypublicclassStudentDao {
                  /*注入jdbcTemplate*/@AutowiredprivateJdbcTemplatejdbcTemplate;
                  /*** 新增* @param student*/publicvoidaddStudent(Studentstudent){
                  Stringsql="insert into t_student values(?,?,?)";
                  Object[] args= {student.getId(), student.getName(), student.getAge()};
                  jdbcTemplate.update(sql,args);
                  System.out.println("新增数据成功!");
                      }
                  /*** 修改* @param student*/publicvoidupdateStudent(Studentstudent){
                  Stringsql="update t_student set name = ?,age = ? where id = ?";
                  Object[] args= {student.getName(),student.getAge(),student.getId()};
                  jdbcTemplate.update(sql,args);
                  System.out.println("修改数据成功!");
                      }
                  /*** 删除* @param id*/publicvoiddelStudent(Stringid){
                  Stringsql="delete from t_student where id = ?";
                  jdbcTemplate.update(sql,id);
                  System.out.println("删除数据成功!");
                      }
                  /*** 查询单个* @param id* @return*/publicStudentqueryStudent(Stringid){
                  Stringsql="select * from t_student where id = ?";
                  Studentstudent=null;
                  try{
                  student=jdbcTemplate.queryForObject(sql,
                  newBeanPropertyRowMapper<Student>(Student.class), id);
                          }catch(Exceptione){
                  System.out.println("查询异常:"+e.getMessage());
                          }
                  returnstudent;
                      }
                  /*** 查询所有* @return*/publicList<Student>queryStudentAll(){
                  Stringsql="select * from t_student";
                  List<Student>studentList=jdbcTemplate.query(sql,
                  newBeanPropertyRowMapper<Student>(Student.class));
                  returnstudentList;
                      }
                  }


                  7. 创建StudentService接口

                  src目录下创建com.wfit.service包,此包目录下创建StudentService.java接口。

                  publicinterfaceStudentService {
                  publicvoidaddStudent(Studentstudent);
                  publicvoidupdateStudent(Studentstudent);
                  publicvoiddelStudent(Stringid);
                  publicStudentqueryStudent(Stringid);
                  publicList<Student>queryStudentAll();
                  }


                  8. 创建StudentServiceImpl类

                  src目录下创建com.wfit.service.impl包,此包目录下创建StudentServiceImpl.java类实现StudentService接口。

                  @ServicepublicclassStudentServiceImplimplementsStudentService {
                  @AutowiredprivateStudentDaostudentDao;
                  /*** 新增* @param student*/@OverridepublicvoidaddStudent(Studentstudent) {
                  studentDao.addStudent(student);
                      }
                  /*** 修改* @param student*/@OverridepublicvoidupdateStudent(Studentstudent) {
                  studentDao.updateStudent(student);
                      }
                  /*** 删除* @param id*/@OverridepublicvoiddelStudent(Stringid) {
                  studentDao.delStudent(id);
                      }
                  /*** 查询单个* @param id* @return*/@OverridepublicStudentqueryStudent(Stringid) {
                  returnstudentDao.queryStudent(id);
                      }
                  /*** 查询所有* @return*/@OverridepublicList<Student>queryStudentAll() {
                  returnstudentDao.queryStudentAll();
                      }
                  }


                  9. 编写测试类

                  src目录下创建com.wfit.test包,此包目录下创建StudentTest.java类。

                  publicclassStudentTest {
                  privateStudentServicestudentService;
                  @Beforepublicvoidinit(){
                  ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");
                  studentService=context.getBean("studentServiceImpl", StudentService.class);
                      }
                  /*** 测试新增*/@TestpublicvoidtestAdd(){
                  Studentstudent=newStudent();
                  student.setId("3");
                  student.setName("zhangsan");
                  student.setAge(20);
                  studentService.addStudent(student);
                      }
                  /*** 测试修改*/@TestpublicvoidtestUpdate(){
                  Studentstudent=newStudent();
                  student.setId("3");
                  student.setName("lisi");
                  student.setAge(19);
                  studentService.updateStudent(student);
                      }
                  /*** 测试删除*/@TestpublicvoidtestDel(){
                  Stringid="3";
                  studentService.delStudent("3");
                      }
                  /*** 测试查询*/@TestpublicvoidtestQuery(){
                  Studentstudent=studentService.queryStudent("1");
                  System.out.println(student);
                      }
                  /*** 测试查询所有*/@TestpublicvoidtestQueryAll(){
                  List<Student>studentList=studentService.queryStudentAll();
                  System.out.println(studentList);
                      }
                  }


                  10. 执行结果

                    • 执行testAdd结果



                      • 执行testUpdate结果



                        • 执行testDel结果



                          • 执行testQuery结果


                            • 执行testQueryAll结果



                            相关实践学习
                            每个IT人都想学的“Web应用上云经典架构”实战
                            本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
                            MySQL数据库入门学习
                            本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
                            目录
                            相关文章
                            |
                            安全 Ubuntu Unix
                            Linux 入门指南:从新手到命令行大师
                            Linux 入门指南:从新手到命令行大师
                            313 1
                            |
                            6月前
                            |
                            Linux 编译器 Android开发
                            鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
                            鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
                            312 1
                            鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
                            |
                            8月前
                            |
                            人工智能 编解码
                            ReCamMaster:视频运镜AI革命!单镜头秒变多机位,AI重渲染颠覆创作
                            ReCamMaster 是由浙江大学与快手科技联合推出的视频重渲染框架,能够根据用户指定的相机轨迹重新生成视频内容,广泛应用于视频创作、后期制作、教育等领域,提升创作自由度和质量。
                            611 0
                            |
                            前端开发 JavaScript Java
                            基于Java+Springboot+Vue开发的民宿预订管理系统
                            基于Java+Springboot+Vue开发的民宿预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的民宿预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
                            289 2
                            基于Java+Springboot+Vue开发的民宿预订管理系统
                            |
                            传感器 机器学习/深度学习 人工智能
                            智能农业机器人:自动化种植与收割
                            【10月更文挑战第22天】随着科技的发展,智能农业机器人正逐步改变传统农业生产方式,引领农业走向自动化、智能化和高效化的新时代。本文将探讨智能农业机器人在精准种植、智能灌溉、高效收割和病虫害监测等方面的应用及其带来的变革。通过典型案例分析,展示智能农业机器人的优势与挑战,并展望其未来发展趋势。
                            |
                            IDE Java Linux
                            Java一分钟之-JavaFX:构建桌面GUI应用
                            JavaFX是Java用于构建桌面应用的强大力量,提供丰富的UI组件、动画、媒体播放和跨平台能力。本文简要介绍JavaFX,讨论环境配置、布局混乱和事件处理等常见问题及其解决方案。通过学习官方文档、实践和使用IDE辅助,开发者能避免这些问题。示例代码展示了一个简单的JavaFX应用,展示如何创建UI、处理事件和构建布局。
                            822 1
                            |
                            存储 算法 Java
                            Java性能优化(三):Java基础-HashMap的设计与优化
                            HashMap核心特性数据结构:HashMap采用哈希表数据结构来存储键值对,利用哈希函数和哈希表快速定位元素位置,提供高效的键值对查询。参数设置初始容量:HashMap允许用户根据使用场景设定初始容量,以优化性能。在预知数据量时,可以通过计算(初始容量=预知数据量/加载因子)来设定合适的初始容量,以减少扩容操作,提高效率。加载因子:加载因子定义了哈希表何时进行扩容的阈值。加载因子较小时,哈希表会更早地进行扩容,减少哈希冲突;加载因子较大时,会提高内存利用率但可能增加哈希冲突。
                            657 2
                            |
                            Java Maven
                            Maven项目指定编译的java版本和源码编码
                            Maven项目指定编译的java版本和源码编码
                            866 0
                            |
                            前端开发 程序员 数据处理
                            硅谷的主干道:深度解析计算机总线的秘密
                            硅谷的主干道:深度解析计算机总线的秘密
                            557 0
                            ENVI_IDL:(批量处理)如何对HDF5文件进行GLT文件的创建并进行几何校正最终输出为IMG格式?
                            ENVI_IDL:(批量处理)如何对HDF5文件进行GLT文件的创建并进行几何校正最终输出为IMG格式?
                            326 0