Spring17_JdbcTemplate基本使用12

一、概述(了解)

 JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。

 spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的 RedisTemplate,操作消息队列的JmsTemplate等等。

二、开发步骤(理解)

 1. 导入spring-jdbc和spring-tx坐标

 2. 创建数据库表和实体

 3. 创建JdbcTemplate对象

 4. 执行数据库操作

三、快速入门代码实现(应用)

 新建一个使用maven骨架生产的module:itheima_spring_jdbc

 1. 导入spring-jdbc和spring-tx坐标

<?xml version="1.0" encoding="UTF-8"?>
<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>com.itheima</groupId>
    <artifactId>itheima_spring_jdbc</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.22.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.22.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
     <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.22.RELEASE</version>
     </dependency>
  </dependencies> 
</project>

 2. 创建数据库表和实体

     

  3. 创建JdbcTemplate对象

  

  执行test1,检查控制台输出,输出1表示插入数据成功

    

四、spring产生JdbcTemplate模板对象(理解)

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

  

 然后通过Spring容器获得JdbcTemplate对象来执行操作。

package com.itheima.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class JdbcTemplateTest {

    @Test
    //测试Spring产生jdbcTemplate对象
    public void test2(){
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
        int row = jdbcTemplate.update("insert into account values (?,?)", "zhangsan", 1000);
        System.out.println(row);
    }
}

  执行test2,检查控制台输出,输出1表示插入数据成功

   

五、spring产生模板对象代码实现(抽取 jdbc.properties)(应用)

   

 

  test2更改下插入name值执行,控制台输出1表示插入数据成功 

六、常用操作-更新操作(应用)

 pom.xml引入spring-test的坐标

 

七、常用操作-查询操作(应用)

package com.itheima.test;

import com.itheima.domain.Account;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTemplateCRUDTest {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Test
    //聚合查询
    public void testQueryCount(){
        Long count = jdbcTemplate.queryForObject("select count(*) from account", Long.class);
        System.out.println(count);
    }

    @Test
    //查询一个
    public void testQueryOne(){
        Account account = jdbcTemplate.queryForObject("select * from account where name=?", new BeanPropertyRowMapper<Account>(Account.class), "lisi");
        System.out.println(account);
    }

    @Test
    //查询所有
    public void testQueryAll(){
        List<Account> accountList = jdbcTemplate.query("select * from account", new BeanPropertyRowMapper<Account>(Account.class));
        System.out.println(accountList);
    }
}

八、知识要点

 1. 导入spring-jdbc和spring-tx坐标

 2. 创建数据库表和实体

 3. 创建JdbcTemplate对象

JdbcTemplate jdbcTemplate = new JdbcTemplate();
//设置数据源对象,知道数据库在哪儿
jdbcTemplate.setDataSource(dataSource);

 4. 执行数据库操作

更新操作:
    jdbcTemplate.update (sql,params)
查询操作:
    jdbcTemplate.query (sql,Mapper,params)
    jdbcTemplate.queryForObject(sql,Mapper,params)

 

posted on 2023-05-06 15:25  花溪月影  阅读(15)  评论(0编辑  收藏  举报