Spring JDBC

简述

  原生的JDBC操作过于繁琐,spring框架提供了一个JDBCTemplate对象来简化JDBC的开发。连接的获取,释放,结果集的封装等操作均交给template干就行。

使用流程

  第一步我们得先导入JDBCTamplate的相关jar包,对没错有5个

  然后我们可以创建JDBCTamplate对象依赖于数据源DataSource

  然后我们就可以使用Tamplate的方法来进行CRUD操作了,我们常用的方法有:

update():执行DML语句。增、删、改语句
queryForMap():查询结果将结果封装为一个map集
queryForList():查询结果将结果封装为一个list集
query():查询结果,将结果封装为一个javabean对象
queryForObject():查询结果,将结果封装为对象

  设现在有一个stduent表,我们已经完成了stduent的bean初始化

  

  我们以如下代码来测试teamplate的好用:

package hjj.JDBCTamplate;

import hjj.JDBCTamplate.domain.Student;
import hjj.datasource.utils.JDBCUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class StudentDemo {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    /**
     * 修改id=1的学生的分数为200
     */
    @Test
    public void test1(){
            //2.定义sql
            String sql = "update student set score = 200 where id = ?";
            //3.执行sql
            int count = template.update(sql, 1);
            System.out.println(count);
    }

    /**
     * 添加一条记录
     */
    @Test
    public void test2(){
        String sql = "insert into student values(null,?,?)";
        int count = template.update(sql,"jjj",999);
        System.out.println(count);
    }
    /**
     * 删除刚刚添加的记录
     */
    @Test
    public void test3(){
        String sql = "delete from student where id = 3";
        int count = template.update(sql);
        System.out.println(count);
    }
    /**
     * 查询id为1的记录,将其结果封装为Map集合
     */
    @Test
    public void test4(){
        String sql = "select * from student where id = ?";
        Map map = template.queryForMap(sql,1);
        System.out.println(map);//键值为字段名,值为该记录的值
    }
    /**
     * 查询id为1的记录,将其结果封装为Map集合
     */
    @Test
    public void test5(){
        String sql = "select * from student";
        List<Map<String, Object>> list = template.queryForList(sql);//将每一条记录都封装为一个map,然后将每个map封装为一个list
        for (Map<String, Object> stringObjectMap : list) {
            System.out.println(stringObjectMap);
        }
    }
    /**
     * 查询所有记录,然后封装为student的list集合
     * 写法一自己实现mapRow接口
     */
    @Test
    public void test6(){
        String sql = "select * from student";
        List<Student> students = template.query(sql, new RowMapper<Student>() {
            @Override
            public Student mapRow(ResultSet resultSet, int i) throws SQLException {
                Student student = new Student();
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int score = resultSet.getInt("score");
                student.setId(id);
                student.setName(name);
                student.setScore(score);
                return student;
            }
        });
        System.out.println(students);
    }
    /**
     * 查询所有记录,然后封装为student的list集合
     * 写法二用别人写好的
     */
    @Test
    public void test7(){
        String sql = "select * from student";
        List<Student> students = template.query(sql, new BeanPropertyRowMapper<Student>(Student.class));
        System.out.println(students);
    }

    /**
     * 查询总记录条数
     */
    @Test
    public void test8(){
        String sql = "select count(id) from student";
        Long tot = template.queryForObject(sql, Long.class);
        System.out.println(tot);
    }
}
View Code
一点一点积累,一点一点蜕变!
原文地址:https://www.cnblogs.com/qq2210446939/p/14759854.html