JdbcTemplate

JdbcTemplate

JdbcTemplate概述

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

JdbcTemplate开发步骤

  • ① 导入spring-jdbc和spring-tx坐标

    ② 创建数据库表和实体

    ③ 创建JdbcTemplate对象

    ④执行数据库操作

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

JdbcTemplate快速入门

  • ① 导入坐标

  •         <!--导入spring的jdbc坐标-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.0.5.RELEASE</version>
            </dependency>
            <!--导入spring的tx坐标-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>5.0.5.RELEASE</version>
            </dependency>
    
  • ② 创建accout表和Accout实体

  • CREATE DATABASE Test
     
    CREATE TABLE ACCOUNT(
    	NAME VARCHAR(255),
    	money INT);
    	
    SELECT * FROM ACCOUNT
    
  • public class Account {
     
        private String name;
        private double money;
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
        public double getMoney() {
            return money;
        }
     
        public void setMoney(double money) {
            this.money = money;
        }
     
        @Override
        public String toString() {
            return "Account{" +
                    "name='" + name + '\'' +
                    ", money=" + money +
                    '}';
        }
    }
    
  • ③ 创建JdbcTemplate对象 ④ 执行数据库操作

  • public class JdbcTemplateTest {
     
        @Test
        //测试JdbcTemplate快速入门
        public void test1() throws PropertyVetoException {
            //创建数据源对象
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
            dataSource.setUser("root");
            dataSource.setPassword("ggm");
     
            //创建模板对象
            JdbcTemplate jdbcTemplate = new JdbcTemplate();
            //设置数据源对象
            jdbcTemplate.setDataSource(dataSource);
            //执行操作
            int row = jdbcTemplate.update("insert into account values(?,?)", "tom", 5000);
            System.out.println(row);
        } 
    }
    

Spring产生JdbcTemplate对象

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

  •     <!--配置数据源对象-->
        <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.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>
     
        <!--jdbc模板对象-->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
  • 从容器中获得JdbcTemplate进行添加操作

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

JdbcTemplate的常用操作

  • 修改操作

  • @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class JdbcTemplateCRUDTest {
     
        @Autowired
        private JdbcTemplate jdbcTemplate;
     
        //修改操作
        @Test
        public void testUpdate() {
            jdbcTemplate.update("update account set money=? where name=?", 10000, "tom");
        }
    }
    
  • 删除和查询全部操作

  • @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class JdbcTemplateCRUDTest {
     
        @Autowired
        private JdbcTemplate jdbcTemplate;
     
        //删除操作
        @Test
        public void testDelete() {
            jdbcTemplate.update("delete from account where name=?", "tom");
        }
     
        //查询多个对象
        @Test
        public void testQueryAll() {
            List<Account> accountList = jdbcTemplate.query("select * from account", new BeanPropertyRowMapper<Account>(Account.class));
            System.out.println(accountList);
        }
    }
    
  • 查询单个数据操作操作

  • @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class JdbcTemplateCRUDTest {
     
        @Autowired
        private JdbcTemplate jdbcTemplate;
     
        //查询单个对象
        @Test
        public void testQueryOne() {
            Account account = jdbcTemplate.queryForObject("select * from account where name=?", new BeanPropertyRowMapper<Account>(Account.class), "tom");
            System.out.println(account);
        }
     
        //聚合查询
        @Test
        public void testQueryCount() {
            Long count = jdbcTemplate.queryForObject("select count(*) from account", Long.class);
            System.out.println(count);
        }
    }
    
  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT枫斗者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值