JdbcTemplate

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.springframeworkgroupId>
      <artifactId>spring-jdbcartifactId>
      <version>5.1.8.RELEASEversion>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-txartifactId>
      <version>5.1.8.RELEASEversion>
    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>
    
    <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);
    }

JdbcTemplate_第1张图片

你可能感兴趣的:(java,spring,spring,boot)