Java-Spring JDBC初体验

Spring JDBC

* Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发

步骤

  1. 导入jar包
  2. 创建JDBCTemplate对象,依赖于数据源DataSource
    • JdbcTemplate template=new JdbcTemplate(datasource);
  3. 调用JDBCTemplate的方法来完成CRUD的操作
    • update():执行DML语句。增删查改
    • queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
      • 注意:查询结果集长度只能为1
    • queryForList():查询结果将结果集封装为list集合
      • 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
    • query():查询结果,将结果封装为JavaBean对象
      • query的参数:RowMapper
        • 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
        • new BeanPropertyRowMapper<类型>(类型.class)
    • queryForObject():查询结果,将结果封装为对象
      • 一般用于聚合函数

代码如下

package cn.itcast.jdbctemplate;

import cn.itcast.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

public class JdbcTemplateDemo1 {
    public static void main(String[] args){
        //导入jar包
        //创建JdbcTemplate对象
        JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
        //调用方法
        String sql="update account set balance=2000 where id=?";
        int count =template.update(sql,3);
        System.out.println(count);
    }
}

练习

需求

1.修改1号数据的salary为10000
2.添加一条数据
3.删除刚才添加的记录
4.查询id为1的记录,将其封装为Map集合  
5.查询所有记录,将其封装为List
6.查询所有记录,将其封装为Emp对象的List集合
7.查询总记录数

代码如下

package cn.itcast.jdbctemplate;

import cn.itcast.domain.Emp;
import cn.itcast.utils.JDBCUtils;
import org.junit.jupiter.api.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.Date;
import java.util.List;
import java.util.Map;

public class JdbcTemplateDemo2 {
    //Junit单元测试 可以让方法独立执行
    // 1.修改1号数据的salary为10000
    //创建JdbcTemplate对象
    private JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
    @Test
    public  void test1(){
        //导入jar包

        //调用方法
        String sql="update emp set sarlary=10000 where id=?";
        int count =template.update(sql,1001);
        System.out.println(count);
    }
    // 2.添加一条数据
    @Test
    public  void test2(){
        //导入jar包

        //调用方法
        String sql="insert into emp(id,ename,dept_id)  values(?,?,?)";
        int count =template.update(sql,1015,"guoj",10);
        System.out.println(count);
    }
    // 3.删除刚才添加的记录
    @Test
    public  void test3(){
        //导入jar包

        //调用方法
        String sql="delete from emp where id=?";
        int count =template.update(sql,1015);
        System.out.println(count);
    }
    // 4.查询id为1005的记录,将其封装为Map集合
    //查询结果集长度只能为1
    @Test
    public  void test4(){
        //导入jar包

        //调用方法
        String sql="select * from emp where id=?";
        Map<String,Object> map =template.queryForMap(sql,1001);
        System.out.println(map);
    }
    // 5.查询所有记录,将其封装为List
    @Test
    public  void test5(){
        //导入jar包

        //调用方法
        String sql="select * from emp where id=? or id=?";
    List<Map<String,Object>> list=template.queryForList(sql,1001,1002);
    for (Map<String,Object> stringObjectMap:list){
        System.out.println(stringObjectMap);
    }

    }
    // 6.查询所有记录,将其封装为Emp对象的List集合
    @Test
    public  void test6(){
        //导入jar包

        //调用方法
        String sql="select * from emp ";
        List<Emp> list=template.query(sql, new RowMapper<Emp>() {

            @Override
            public Emp mapRow(ResultSet resultSet, int i) throws SQLException {

                int id=resultSet.getInt("id");
                String ename=resultSet.getString("ename");
                int job_id=resultSet.getInt("job_id");
                int mgr=resultSet.getInt("mgr");
                Date joindate=resultSet.getDate("joindate");
                double salary=resultSet.getDouble("sarlary");
                double bonus=resultSet.getDouble("bonus");
                int dept_id=resultSet.getInt("dept_id");
                Emp emp=new Emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id);

                return emp;
            }
        });
    for (Emp emp:list){
        System.out.println(emp);
    }

    }
    // 6.查询所有记录,将其封装为Emp对象的List集合
    @Test
    public  void test6_2(){
        //导入jar包

        //调用方法
        String sql="select * from emp ";
        List<Emp> list=template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
        for (Emp emp:list){
            System.out.println(emp);
        }

    }
    // 7.查询总记录数
    @Test
    public  void test7(){
        //导入jar包

        //调用方法
        String sql="SELECT COUNT(id) FROM emp";
    Long total=template.queryForObject(sql,Long.class);
        System.out.println(total);
    }
}

Java-Spring JDBC初体验

上一篇:sql server 系统视图


下一篇:查询oracle各个表所占空间大小