Spring JdbcTemplate使用實例

JdbcTemplate簡介

Spring對數據庫的操作在jdbc上面做了深層次的封裝,使用spring的注入功能,可以把DataSource註冊到JdbcTemplate之中。JdbcTemplate位於spring-jdbc-4.3.7.RELEASE.jar中。
 其全限定命名爲org.springframework.jdbc.core.JdbcTemplate。要使用JdbcTemlate還需一個spring-tx-4.3.7.RELEASE.jar這個包包含了一下事務和異常控制

引自http://www.cnblogs.com/caoyc/p/5630622.html

實例

package com.mysql;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

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

public class TestJDbc {

    private ApplicationContext ctx =null;
    private JdbcTemplate jdbcTemplate;

    {
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate");
    }

    @Test
    public void testDataSource() throws SQLException{
        DataSource dataSource = ctx.getBean(DataSource.class);
        System.out.println(dataSource.getConnection());
    }

    @Test
    public void updateTest(){
        String sql = "UPDATE person SET age = ? WHERE id = ?";
        jdbcTemplate.update(sql,"16",1);
    }

    @Test
    public void testBatchUpdate(){
        String sql = "INSERT INTO person(id,name,age) VALUES(?,?,?)";

        List<Object[]> batchArgs = new ArrayList<>();

        batchArgs.add(new Object[]{"2","ming","15"});
        batchArgs.add(new Object[]{"3","xin","156"});
        batchArgs.add(new Object[]{"4","wang","14"});

        jdbcTemplate.batchUpdate(sql, batchArgs);
    }

    @Test
    public void testQueryForObject(){
        String sql = "SELECT id , name ,age,address addr FROM person WHERE id =?";
        //用別名來映射數據庫中字段和類之間的屬性的關係
        RowMapper<Person> rowMapper = new BeanPropertyRowMapper<>(Person.class);

        Person per = jdbcTemplate.queryForObject(sql,rowMapper,1);

        System.out.println(per);
    }

    @Test
    public void testQueryForList(){
        String sql ="SELECT id , name , age ,address addr FROM person WHERE id >?";

        RowMapper<Person> rowMapper = new BeanPropertyRowMapper<>(Person.class);

        List<Person> perList = jdbcTemplate.query(sql, rowMapper,1);
        System.out.println(perList);

    }


}

總結

(1)使用RowMapper來進行數據庫中每行記錄和實體類的匹配
(2)用別名來映射數據庫中字段和類之間的屬性的關係
(3)使用org.springframework.jdbc.core.RowMapper
而不是javax.swing.tree.RowMapper
(4)使用javax.sql.DataSource
而不是javax.activation.DataSource
(5)理解數據源的配置關係

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章