JdbcTemplate

JdbcTemplate是Spring对JDBCAPI的封装,简化了数据库操作。文章介绍了如何导入坐标,创建数据库表和实体,以及通过两种方式(直接创建和Spring管理)设置JdbcTemplate并执行插入、更新、删除和查询等数据库操作。同时提到了BeanPropertyRowMapper在转化查询结果到Java对象中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring JdbcTemplate基本使用

概述

JdbcTemplate是Spring框架中提供的一个对象,是对原始繁琐的jdbc API对象的简单封装。Spring框架提供了很多的操作模板类。例如:操作关系型数据的jdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等

JdbcTemplate开发步骤

  1. 导入Spring-jdbc和Spring-tx坐标
  2. 创建数据库表和实体
  3. 创建jdbcTemplate对象
  4. 执行数据库操作

入门

1、导入坐标

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>

2、创建account表和Account实体

img

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Account {
    // 姓名
    private String name;
    // 金额
    private double money;
}

3、创建JdbcTemplate对象

4、执行数据库操作

方法一:

    @Test
    public void demo() {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        try {
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/manage?serverTimezone=GMT%2B8");
            dataSource.setUser("root");
            dataSource.setPassword("root");
            // 创建jdbcTemplate对象
            JdbcTemplate jdbcTemplate = new JdbcTemplate();
            // 设置数据源给JdbcTempalte
            jdbcTemplate.setDataSource(dataSource);
            // 执行操作
            jdbcTemplate.update("insert into account values('张三', 20000.0)");

        } catch (PropertyVetoException e) {
            throw new RuntimeException(e);
        }
    }

方法二:

可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模板对象中,配置如下:

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/manage?serverTimezone=GMT%2B8"/>
        <property name="user" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <!--jdbcTemplate-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

从容器中获得JdbcTemplate进行添加操作

    @Test
    public void demo1() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
        JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
        jdbcTemplate.update("insert into account values ('里斯', 30000)");
    }

修改操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:application.xml")
public class DemoTest1 {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    public void testUpdate() {
        jdbcTemplate.update("update account set money = ? where name = ?", 100, "张三");
    }
}

删除金和查询操作

    // 删除操作
    @Test
    public void testDelete() {
        jdbcTemplate.update("delete from account where name = ?", "张三");
    }

    // 查询操作
    @Test
    public void testSelect() {
        List<Account> accountList = jdbcTemplate.query("select * from account", new BeanPropertyRowMapper<Account>(Account.class));
        for (Account account : accountList) {
            System.out.println(account.getName());
        }
    }

注意:BeanPropertyRowMapper将数据库查询结果转化为java类对象。常应用于使用Spring的JdbcTemplate查询数据库,获取List结果列表,数据库表字段和实体类自动对应

查询单个数据操作

    @Test
    public void testSelect1() {
        Account account = jdbcTemplate.queryForObject("select * from account where name = ?", new BeanPropertyRowMapper<Account>(Account.class), "里斯");
        System.out.println(account.getName());
    }

    // 测试查询单个简单数据操作(聚合查询)
    @Test
    public void testQuery(){
        Long Long= jdbcTemplate.queryForObject("select count(*) from account", Long.class);
        System.out.println(Long);
    }

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值