• 【java框架】Spring(4) -- Spring JdbcTemplate基本使用


    1.Spring JdbcTemplate基本使用

    1.1.JdbcTemplate概述

    Spring JdbcTemplate是spring框架中提供的一个基于原始Jdbc API对象进行封装后的工具集合包,优点是简单易用,基于maven只需要导入少量的pom依赖坐标,基于sql做极简的代码操作,极大的简化了执行CRUD的繁琐公共流程代码,是优秀的工程实践。

    1.2.JdbcTemplate开发步骤

    使用JdbcTemplate进行CURD操作主要有以下四个步骤:

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

    ②创建数据库表和实体;

    ③创建jdbcTemplate对象;

    ④执行数据库操作

    导入jdbc坐标与tx坐标maven依赖:

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

    创建一个数据库表与对应的实体类如下:

    Account账户类:

    /**
     *  用户账户实体类  省略getter/setter
     */
    public class Account {
        private String name;
    
        private double money;
    }

    创建JdbcTemplate对象并执行数据库操作:

    //1.创建数据源对象
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    dataSource.setDriverClass("com.mysql.jdbc.Driver");
    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/springjdbc_0210");
    dataSource.setUser("root");
    dataSource.setPassword("admin");
    //2.创建JdbcTemplate对象
    JdbcTemplate template = new JdbcTemplate();
    //3.设置数据源给JdbcTemplate
    template.setDataSource(dataSource);
    //4.执行数据库操作
    template.update("insert into account(name, money) values ('lihua', 7320.5)");

     

    1.3.Spring管理JdbcTemplate对象进行CRUD

    一般项目中我们使用Spring来进行JdbcTemplate对象的注入,由Spring来管理JdbcTemplate,并且在创建数据源连接时我们也一般使用jdbc.properties配置来加载数据库常用配置。具体操作如下:

    ①首先在applicationContext.xml中配置加载jdbc.properties文件,并配置jdbcTemplate模板Bean对象;

     applicationContext.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        <!--加载jdbc.properties文件-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <!--数据源对象-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClass}"></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"></property>
        </bean>
    </beans>

    jdbc.properties配置如下:

    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/springjdbc_0210
    jdbc.username=root
    jdbc.password=admin

    ②创建测试类测试JdbcTemplate对象是否注入成功:

    public class JdbcTemplateTest {
        //测试Spring产生jdbcTemplate对象
        @Test
        public void createTemplateTest(){
            ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
            JdbcTemplate template = app.getBean(JdbcTemplate.class);
            System.out.println(template);
        }
    }

    结果打印如下,表示Spring容器中已初始化bean:

    ③使用Spring JdbcTemplate进行数据库实体增删查改一些列操作:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class SpringJdbcTemplateTest {
        @Autowired
        private JdbcTemplate jdbcTemplate;
    
        @Test
        public void queryCountTest(){
            Integer count = jdbcTemplate.queryForObject("select count(*) from account",
                    Integer.class);
            System.out.println(count);
        }
    
        @Test
        public void queryOneTest(){
            Account query = jdbcTemplate.queryForObject("select * from account where name = ?",
                    new BeanPropertyRowMapper<Account>(Account.class), "lihua");
            System.out.println(query);
        }
    
        @Test
        public void queryAllTest(){
            List<Account> accountList = jdbcTemplate.query("select * from account", new BeanPropertyRowMapper<Account>(Account.class));
            System.out.println(accountList);
        }
    
        @Test
        public void updateTest(){
            int update = jdbcTemplate.update("update account set money = ? where name =?", 300, "lihua");
            System.out.println(update);
        }
    
        @Test
        public void insertTest(){
            int insert = jdbcTemplate.update("insert into account(name, money) values ('lisi', 8700)");
            System.out.println(insert);
        }
    
        @Test
        public void deleteTest(){
            int delete = jdbcTemplate.update("delete from account where id = ?", 4);
            System.out.println(delete);
        }
    }
  • 相关阅读:
    poj2481 线段树(单点更新)
    二叉查找树 hdu(3791 && 3999)
    计算机科学32个最重要的算法
    03最小路径覆盖问题
    02太空飞行计划问题
    hdu 2448最短路+最佳匹配
    poj1419 最大团
    hdu 3585(二分+最大团)
    hdu 3622 2-SAT
    hdu3592差分约束
  • 原文地址:https://www.cnblogs.com/yif0118/p/14399367.html
Copyright © 2020-2023  润新知