热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringDataJdbcTemplate入门指南

本文将介绍如何使用SpringJdbcTemplate进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。

目标

本文将通过一个学生表(包含 id、name 和 age 属性,其中 id 自增)来展示如何使用 Spring JdbcTemplate 进行数据查询和插入操作。

项目结构

项目结构图

Maven 依赖

mysqlmysql-connector-java5.1.38org.springframeworkspring-jdbc4.3.5.RELEASEorg.springframeworkspring-context4.3.4.RELEASE

代码编写

建立对象模型

Student.java

package com.example.entity;/*** Student 实体类* @author YourName* @create YYYY-MM-DD*/public class Student {private int id; // 主键private String name; // 姓名private int age; // 年龄public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

Spring 配置文件 - beans.xml 创建

此文件为最终版,可能由于部分类尚未创建而报错,暂时可以忽略。

beans.xml

DAO 开发

StudentDAO.java

package com.example.dao;import com.example.entity.Student;import java.util.List;/*** 学生类 DAO 接口* @author YourName* @create YYYY-MM-DD*/public interface StudentDAO {/*** 查询所有学生* @return 所有学生*/public List query();/*** 添加一个学生* @param student 学生对象*/public int save(Student student);}

StudentDAOImpl.java

package com.example.dao;import com.example.entity.Student;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowCallbackHandler;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;/*** Student 类 DAO 实现类,通过 JDBC 方式操作* @author YourName* @create YYYY-MM-DD*/public class StudentDAOImpl implements StudentDAO{private JdbcTemplate jdbcTemplate;public List query() {final List students = new ArrayList();String sql = "select id, name, age from student";jdbcTemplate.query(sql, new RowCallbackHandler() {@Overridepublic void processRow(ResultSet resultSet) throws SQLException {Student student = new Student();student.setId(resultSet.getInt("id"));student.setName(resultSet.getString("name"));student.setAge(resultSet.getInt("age"));students.add(student);}});return students;}public int save(Student student) {String sql = "insert into student (name, age) values (?, ?)";int result = jdbcTemplate.update(sql, student.getName(), student.getAge());return result;}public JdbcTemplate getJdbcTemplate() {return jdbcTemplate;}public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}}

测试类创建

需要有一定的 JUnit 基础。

DataSourceTest.java

package com.example;import com.example.dao.StudentDAO;import com.example.entity.Student;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;import java.util.List;import static org.junit.Assert.assertNotNull;/*** @author YourName* @create YYYY-MM-DD*/public class DataSourceTest {private ApplicationContext ctx;@Beforepublic void setup() {ctx = new ClassPathXmlApplicationContext("beans.xml");}@Afterpublic void tearDown() {ctx = null;}@Testpublic void testDataSource() {DataSource dataSource = ctx.getBean("dataSource", DataSource.class);assertNotNull(dataSource);}@Testpublic void testJdbcTemplate() {JdbcTemplate jdbcTemplate = ctx.getBean("jdbcTemplate", JdbcTemplate.class);assertNotNull(jdbcTemplate);}@Testpublic void testQuery() {StudentDAO studentDAO = ctx.getBean("studentDAO", StudentDAO.class);List studentList = studentDAO.query();for (Student student : studentList) {System.out.println("id: " + student.getId() + " name: " + student.getName() + " age: " + student.getAge());}}@Testpublic void testSave() {StudentDAO studentDAO = ctx.getBean("studentDAO", StudentDAO.class);Student student = new Student();student.setName("maliu");student.setAge(23);int result = studentDAO.save(student);System.out.println(result);}}

参考资料:原文链接


推荐阅读
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
author-avatar
一恒谢永泰_661
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有