Spring——JdbcTemplate

简介

  它是一个Spring框架提供的一个对象。是对原始JDBC API对象的简单封装。

  

Idea快捷键:

  双击shift,快速查询类的源代码

  shift+shift:输入RowMapper

  

  ctrl+shift+B:选中一个类名,看它的实现

  

 

导包

  <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>

 

配置

    <!-- properties    -->
    <context:property-placeholder location="jdbc.properties"/>

    <!-- 配置数据源对象    -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 配置JdbcTemplate对象    -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" scope="singleton">
        <property name="dataSource" ref="dataSource"/>
    </bean>

 

其他类

  BeanProperRowMapper:实体属性行映射

    作用:作为update的参数,用于直接封装多个bean对象为:List<Bean>,Bean

    实例化:

  new BeanProperRowMapper<Bean>(Bean.class)

 

方法

  void setDataSource(DataSource datasource)

    参数:

      dataSource:数据源

    返回值:void

    返回值意义:无

    作用:通过dataSource设置JdbcTemplate

 

  ...args :代表有多少占位符。就多少参数

  int update(String str,...args)

    参数: 

      str:sql语句

      ...args:占位符赋值

    返回值:int

    返回值意义:影响行数

    作用:更新操作

 

  T queryForObject(String sql , T.class )

    参数:

      sql:查询语句

      T.class:基本类型的封装类型

    返回值:基本类型T

    返回值意义:获取查询结果的基本类型T

    作用:获取查询结果的基本类T

 

  T queryForObject(String sql , BeanProperRowMap<T>(T.class) , ..args )

    参数:

      sql:sql查询语句

      BeanProperRowMapper:封装多个Bean为List<Bean>的对象,类似BeansHandler

      ...args:为占位符赋值

    返回值:Object

    返回值意义:获取查询结果的封装对象

    作用:获取查询结果的封装对象

  

  List<T> query(String sql , BeanProperRowMapper<T>(T.class) ,...args )

    参数:

      sql:sql查询语句

      BeanProperRowMapper:封装多个Bean为List<Bean>的对象,类似BeanHandler

      ...args:为占位符赋值

    返回值:List<T>

    返回值意义:获取查询结果集的封装对象集合

    作用:获取查询结果集的封装对象集合

   

使用

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

    @Test
    // 测试JDBC模板开发步骤
    public void test6() throws PropertyVetoException, SQLException {
        //查询操作,查询总数
        Integer integer = jdbcTemplate.queryForObject("select count(money) from account ", Integer.class);
        System.out.println(integer);
    }

    @Test
    // 测试JDBC模板开发步骤
    public void test5() throws PropertyVetoException, SQLException {
        //查询操作,查询单个对象
        Account account = jdbcTemplate.queryForObject("select * from account where id = ?", new BeanPropertyRowMapper<Account>(Account.class), 4);
        System.out.println(account);
    }

    @Test
    // 测试JDBC模板开发步骤
    public void test4() throws PropertyVetoException, SQLException {
        //查询操作,查询多个对象
        List<Account> query = jdbcTemplate.query("select * from account ", new BeanPropertyRowMapper<Account>(Account.class));
        ArrayList<Account> accountArray = (ArrayList<Account>) query;
        System.out.println(accountArray.toString());
    }

    @Test
    // 测试JDBC模板开发步骤
    public void test3() throws PropertyVetoException, SQLException {
        //更新操作
        int row = jdbcTemplate.update("insert into account (name,money) values (?,?)","lisi","7000");
    }

    @Test
    // 测试JDBC模板开发步骤
    public void test2() throws PropertyVetoException, SQLException {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
        //更新操作
        int row = jdbcTemplate.update("insert into account (name,money) values (?,?)","zhangsan","4000");

    }

    @Test
    // 测试JDBC模板开发步骤
    public void test1() throws PropertyVetoException, SQLException {
        // 创建数据源对象
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
        comboPooledDataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/user");
        comboPooledDataSource.setUser("root");
        comboPooledDataSource.setPassword("844597608a");
        System.out.println(comboPooledDataSource.getConnection());
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        // 设置数据源,获取Connect对象
        jdbcTemplate.setDataSource(comboPooledDataSource);
        //更新操作
        int row = jdbcTemplate.update("insert into account (name,money) values (?,?)","tom","5000");

    }
}

 

上一篇:dubbo3.0升级在哪?


下一篇:Spring JdbcTemplate操作数据库