当前位置: 首页 > article >正文

spring JdbcTemplate 快速入门

概述

Spring JDBC Template 是 Spring Framework 提供的一个简化 JDBC 操作的模板类。它封装了一些常见的 JDBC 操作,使得开发者在使用 JDBC 时能够更加便捷、简洁,同时也提供了异常处理和资源管理等功能。

导入pom 使用C3P0作为数据源

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
​
  <groupId>org.example</groupId>
  <artifactId>spring-jdbc-demo1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
​
  <name>spring-jdbc-demo1</name>
  <url>http://maven.apache.org</url>
​
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
​
  <dependencies>
​
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>6.0.13</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>6.0.13</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>6.0.13</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>
    </dependency>
    <!-- Spring JDBC -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.5</version>
    </dependency>
​
    <!-- Spring Transaction (如果需要事务支持) -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.3.10</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
​

普通纯java代码 查询操作

 ComboPooledDataSource dataSource =new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db2");
        dataSource.setUser("root");
        dataSource.setPassword("11111");
        JdbcTemplate jdbcTemplate =new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        int row = jdbcTemplate.update(
            "INSERT INTO user values (?,?,?)", "110", "xl11x", 105);
        System.out.println(row);

Xml配置 springJDBCTemplate(简化纯java代码)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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
        http://www.springframework.org/schema/context/spring-context.xsd">
   <context:property-placeholder location="classpath:mysql.properties"></context:property-placeholder>
    <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.Driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
     </bean>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="datasource"></property>
    </bean>
</beans>``

Properties文件配置

jdbc.Driver =com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/db2
jdbc.user = root
jdbc.password = 111111

测试 插入

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        JdbcTemplate jdbcTemplate =  context.getBean(JdbcTemplate.class);
        int row =jdbcTemplate.update("INSERT INTO user values (?,?,?)", "1110", "llx", 1105);
        System.out.println(row);

测试 查询(重要)

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        JdbcTemplate jdbcTemplate =  context.getBean(JdbcTemplate.class);
        List<User> query = jdbcTemplate.query("select * from user", new BeanPropertyRowMapper<User>(User.class));
        System.out.println(query);

new BeanPropertyRowMapper<User>(User.class)

这个API里面的泛型填的是你要查询的封装而成的实体类 参数是实体类的字节码文件

返回的是一个list集合

实体类

package domain;
​
public class User {
    private String sno;
    private String name;
    private int point;
​
    public User(String sno, String name, int point) {
        this.sno = sno;
        this.name = name;
        this.point = point;
    }
​
    public User() {
    }
​
    public String getSno() {
        return sno;
    }
​
    public void setSno(String sno) {
        this.sno = sno;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public int getPoint() {
        return point;
    }
​
    public void setPoint(int point) {
        this.point = point;
    }
​
    @Override
    public String toString() {
        return "User{" +
                "sno='" + sno + '\'' +
                ", name='" + name + '\'' +
                ", point=" + point +
                '}';
    }
}
​

http://www.kler.cn/news/148045.html

相关文章:

  • JavaScript创建枚举
  • 解决:javax.websocket.server.ServerContainer not available 报错问题
  • 函数声明与函数表达式
  • uniapp之Vue3配置跨域(代理)
  • [RK-Linux] recovery分区详解(二)
  • harmonyos应用开发者高级认证考试部分答案
  • 配置ssh 免密登录 还是要密码才能登录
  • 二次开发问题汇总【C#】
  • MySQL进阶-InnoDB引擎
  • 全新付费进群系统源码 完整版教程
  • 数字人对本地生活商家的影响和应用
  • 竞赛选题 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测
  • Rust语言入门教程(五) - 流控制语句
  • vue 中 js 金额数字转中文
  • 其利天下技术总监冯建武受邀出席“2023年电子工程师大会”并作主题演讲
  • 【精选】框架初探篇之——MyBatis的CRUD及配置文件
  • Linux - 系统调用(syscall)
  • Qt实现绘制自定义形状
  • ORACLE 多实例监听的配置
  • 接收网络包的过程——从硬件网卡解析到IP层
  • jar包不挂断地运行命令
  • 【电路笔记】-电源电压
  • 时间复杂度和运算
  • lack——主页前后端开发优化(精华:java多线程实现数据插入)
  • 【docker】docker的基础命令
  • 消失的数字,旋转数组(leetcode 一题多解)
  • 力扣 hot100 最小覆盖子串 滑动窗口 字符计数
  • 【沁恒蓝牙mesh】CH58x 将RTC时钟切换为LSE外部低速时钟
  • 中年人怎么发展?持续发展?
  • 牛客 算法 HJ103 Redraiment的走法 golang语言实现