0


Spring:JDBCTemplate

JDBCTemplate

在这里插入图片描述

概述

JDBC(Java DataBase Connectivity,Java 数据库连接), 一 种用于执行 SQL 语句的 Java API(Application Programming Interface , 应用程序设计接口 ),可以为多种关系数据库提供统一访问,由一组用 Java 语言编写的类和接口组成。

JDBCTemplate ,是一个 JDBC 的模板,Spring 封装了 JDBC 常用的操作,简化了 JDBC API 的使用和开发人员的工作,提供了便捷、安全和高效的访问数据库的方式。

简单示例:
首先在 pom.xml 文件中添加以下配置:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.25</version></dependency>

然后创建一个带有 id 和 name 属性的 JDBC 表:
在这里插入图片描述

再根据 JDBC 表定义一个与之相映射的 JDBC 类:

packagecn.edu.springdemo.jdbc;publicclassJDBC{publicint id;publicString name;publicJDBC(){super();}publicJDBC(int id,String name){this.id = id;this.name = name;}publicintgetId(){return id;}publicStringgetName(){return name;}publicvoidsetId(int id){this.id = id;}publicvoidsetName(String name){this.name = name;}@OverridepublicStringtoString(){return"JDBC{"+"id="+ id +", name='"+ name +'\''+'}';}}

接着,定义一个接口 JDBCDao ,声明一系列常用访问数据库的方法:

packagecn.edu.springdemo.jdbc;importjava.util.List;publicinterfaceJDBCDao{publicvoidadd(JDBC jdbc);publicvoiddelete(int id);publicvoidupdate(JDBC jdbc);publicJDBCselect(int id);publicList<JDBC>selectAll();}

再创建该接口的实现类 JDBCDaoImpl :

packagecn.edu.springdemo.jdbc;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.BeanPropertyRowMapper;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.jdbc.core.RowMapper;importorg.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;importorg.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;importorg.springframework.jdbc.core.namedparam.SqlParameterSource;importorg.springframework.stereotype.Repository;importjava.util.List;@Repository("JDBCDao")publicclassJDBCDaoImplimplementsJDBCDao{@AutowiredprivateNamedParameterJdbcTemplate namedParameterJdbcTemplate;@AutowiredprivateJdbcTemplate jdbcTemplate;//增添publicvoidadd(JDBC jdbc){String sql ="INSERT INTO `jdbc` (`name`) VALUES (:name);";SqlParameterSource sqlParameterSource =newBeanPropertySqlParameterSource(jdbc);
        namedParameterJdbcTemplate.update(sql,sqlParameterSource);}/**
     *     增添或者使用如下方法
     *     public void add(JDBC jdbc){
     *         String sql = "INSERT INTO `jdbc` (`name`) VALUES (?);";
     *         Object[] args = {jdbc.getName()};
     *         jdbcTemplate.update(sql,args);
     *     }
     *///删除publicvoiddelete(int id){String sql ="DELETE FROM `jdbc` WHERE `id`=?;";
        jdbcTemplate.update(sql,id);}//修改publicvoidupdate(JDBC jdbc){String sql ="UPDATE `jdbc` SET `name`=? WHERE `id`=?;";Object[] args ={jdbc.getName(),jdbc.getId()};
        jdbcTemplate.update(sql,args);}//id查询publicJDBCselect(int id){String sql ="SELECT `id`,`name` FROM `jdbc` WHERE `id`=?;";RowMapper<JDBC> list =newBeanPropertyRowMapper<>(JDBC.class);return jdbcTemplate.queryForObject(sql,list,id);}//查询publicList<JDBC>selectAll(){String sql ="SELECT `id`,`name` FROM `jdbc`;";RowMapper<JDBC> rowMapper =newBeanPropertyRowMapper<>(JDBC.class);List<JDBC> list = jdbcTemplate.query(sql,rowMapper);return list;}}

另外在 resources 目录下创建 jdbc.properties ,添加以下内容:

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student?useSSL=false&serverTimezone=UTC
jdbc.user=root
jdbc.password=0123
acquireIncrement=5
initialPoolSize=10
minPoolSize=5
maxPoolSize=100
maxStatements=2
maxStatementsPerConnection=5

xml配置:

<?xml version="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="cn.edu.springdemo.jdbc"/><!-- 在 Bean 的外部属性文件的使用中有所提及 --><!-- 使用context命名空间,通过 location 属性指定 properties 文件位置 --><context:property-placeholderlocation="classpath:jdbc.properties"/><beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 连接MySQL数据库的基本信息的配置 --><!-- 驱动程序类名:com.mysql.jdbc.Driver --><propertyname="driverClass"value="${jdbc.driverClass}"/><!-- JDBC URL:jdbc:mysql://<host>:<port>/<database_name> --><propertyname="jdbcUrl"value="${jdbc.url}"/><!-- 数据库用户名 --><propertyname="user"value="${jdbc.user}"/><!-- 数据库用户密码 --><propertyname="password"value="${jdbc.password}"/><!-- 若数据库中的连接数量不足时,向数据库申请的连接数量 --><propertyname="acquireIncrement"value="${acquireIncrement}"/><!-- 初始化数据库连接池时连接的数量 --><propertyname="initialPoolSize"value="${initialPoolSize}"/><!-- 数据库连接池最小的数据库连接数 --><propertyname="minPoolSize"value="${minPoolSize}"/><!-- 数据库连接池最大的数据库连接数 --><propertyname="maxPoolSize"value="${maxPoolSize}"/><!-- C3P0数据库连接池可以维护的Statement数量 --><propertyname="maxStatements"value="${maxStatements}"/><!-- 每个连接同时可以使用Statement的数量 --><propertyname="maxStatementsPerConnection"value="${maxStatementsPerConnection}"/></bean><!-- 配置jdbcTemplate,注入dataSource --><beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><propertyname="dataSource"ref="dataSource"/></bean><!-- 配置namedParameterJdbcTemplate,注入dataSource --><beanid="namedParameterJdbcTemplate"class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"><constructor-argtype="javax.sql.DataSource"ref="dataSource"/></bean></beans>

最后测试结果:

packagecn.edu.springdemo.jdbc;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassJDBCTest{publicstaticvoidmain(String[] args){ApplicationContext applicationContext =newClassPathXmlApplicationContext("jdbc.xml");JDBCDao jdbcDao =(JDBCDao) applicationContext.getBean("JDBCDao");System.out.println("第一次查询:"+ jdbcDao.selectAll());JDBC jdbc =newJDBC();
        jdbc.setName("赵子龙");
        jdbcDao.add(jdbc);//新增

        jdbc.setId(10106);
        jdbc.setName("赵云");
        jdbcDao.update(jdbc);//修改System.out.println("第二次查询:"+ jdbcDao.selectAll());System.out.println("id查询:"+ jdbcDao.select(10101));

        jdbcDao.delete(10104);//删除}}

结果如图:
在这里插入图片描述

标签: Spring JDBCTemplate

本文转载自: https://blog.csdn.net/qq_56886142/article/details/130876224
版权归原作者 啊Q老师 所有, 如有侵权,请联系我们删除。

“Spring:JDBCTemplate”的评论:

还没有评论