首页 > 其他分享 >566 JDBCTemplate_快速入门 and 567 JDBCTemplate_执行DML语句

566 JDBCTemplate_快速入门 and 567 JDBCTemplate_执行DML语句

时间:2022-10-19 15:25:03浏览次数:45  
标签:封装 DML 566 public emp template sql id JDBCTemplate

JDBCTemplate_快速入门

步骤

  • 导入jar包
  • 创建JDBCTemplate对象,依赖于数据源DataSourrce
    • jdbcTemplate template = new JDBCTemplate(ds);
  • 调用JDBCTemplate的方法来完成CRUD的操作
    •   update():执行DML语句。增、删、改语句
    •   queryForMap():查询结果将结果集封装为map集合
    •   queryForList():查询结果将结果集封装为list集合
    •   query():查询结果,将结果封装为JavaBean对象
    •   queryForobject :查询结果,将结果封装为对象

 

 

/**
 * JDBC_template入门
 */
public class JDBC_template_demo01 {
    public static void main(String[] args) {
        /* 导入jar包 */
        /* 创建JDBCTemplate对象 */
        JdbcTemplate template = new JdbcTemplate(JDBC_utils.getDataSource());
        /* 调用方法 */
        String sql = "update account set balance = 3000 where id = ?";
        int count = template.update(sql, 3);
        System.out.println(count);
    }
}
/**
 * Druid连接池工具类
 */
public class JDBC_utils {
    /* 定义成员变量 */
    private static DataSource ds;

    /* 初始化赋值 */
    static {
        /* 加载配置文件 */
        Properties pro = new Properties();
        try {
            /* 通过漏的方法加载   以及链式编程 */
            pro.load(JDBC_utils.class.getClassLoader().getResourceAsStream("druid.properties"));
            /* 获取DataSource */
            try {
                ds = DruidDataSourceFactory.createDataSource(pro);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /* 获取连接 */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    /* 释放资源 */
    public static void close1(ResultSet rs ,Statement stmt,Connection conn){
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                /* 归还连接 */
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close( Statement stmt , Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                /* 归还连接 */
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /* 获取连接池的方法 */
    public static DataSource getDataSource() {
    return ds;
    }
}

 JDBCTemplate_执行DML语句练习

调用dbcTemplate的方法来完成CRUD的操作

(1)update():执行DML语句。增、删、改语句

(2)queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value将这条记录封装为一个map集合

   注意:这个方法查询的结果集长度只能是1

(3)queryForList():查询结果将结果集封装为list集合

  注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中

(4)query():查询结果,将结果封装为]avaBean对象

   query的参数:RowMapper

   一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装

   new BeanPropertyRowMapper<类型>(类型.class)

(5)queryForobject :查询结果,将结果封装为对象

  —般用于聚合函数的查询

需求:

  1.修改1号数据的salary 为10000

  2.添加一条记录

  3.删除刚添加的记录

  4.查询id为1的记录,将其封装为Map集合   注:这个方法查询的结果集长度只能是1将列名作为key,将值作为value将这条记录封装为一个map集合

  5.查询所有记录,l将其封装为List 注:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中

  6.查询所有记录,将其封装为Emp对象的List集合

  7.查询总记录数

/**
 *  Junit 单元测试
 */

public class JDBC_template_demo02 {
   /* 获取JDBCTemplate对象 */
   public JdbcTemplate template = new JdbcTemplate(JDBC_utils.getDataSource());

    /* 1.修改1号数据的salary 为10000 */
    @Test
    public void test1() {
        /* 定义sql */
        String sql = "update emp set salary =10000 where id = 1001";
        /* 执行sql */
        int update = template.update(sql);
        System.out.println(update);
    }
    /*-------------------------------------------------------------------------*/

    /* 2.添加一条记录 */
    @Test
    public void test2() {
        /* 定义sql */
        String sql = "insert into emp(id,ename,salary,dept_id) values (?,?,?,?)";
        /* 执行sql */
        int update = template.update(sql,1015,"吴承恩",99999,10);
        System.out.println(update);
    }
    /*-------------------------------------------------------------------------*/

    /* 3.删除刚添加的记录 */
    @Test
    public void test3() {
        /* 定义sql */
        String sql = "delete from emp where id = ?";
        /* 执行sql */
        int update = template.update(sql,1015);
        System.out.println(update);
    }
    /*-------------------------------------------------------------------------*/

    /* 4.查询id为1的记录,将其封装为Map集合 */
    /*
       注:这个方法查询的结果集长度只能是1
       将列名作为key,将值作为value将这条记录封装为一个map集合
    */
    @Test
    public void test4() {
        /* 定义sql */
        String sql = "select * from emp";
        /* 执行sql */
        Map<String, Object> map = template.queryForMap(sql, 1001);
        System.out.println(map);
    }
    /*-------------------------------------------------------------------------*/

    /* 5.查询所有记录,l将其封装为List */
    /*
    注:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
     */
    @Test
    public void test5() {
        /* 定义sql */
        String sql = "select * from emp";
        /* 执行sql */
        List<Map<String, Object>> list = template.queryForList(sql);
        for (Map<String, Object> s : list) {
            System.out.println(s);
        }
    }
    /*-------------------------------------------------------------------------*/

    /* 6.查询所有记录,将其封装为Emp对象的List集合 */
    @Test
    public void test6_01() {
        /* 定义sql */
        String sql = "select * from emp";
        /* 执行sql */
        List<Emp> list = template.query(sql, new RowMapper<Emp>() {

            @Override           /* 结果集对象 */
            public Emp mapRow(ResultSet rs, int i) throws SQLException {
                /* new Emp表 */
                Emp emp = new Emp();
                /* 获取emp表的各列数据的结果集 */
                int id = rs.getInt("id");
                String ename = rs.getString("ename");
                int job_id = rs.getInt("job_id");
                int mgt = rs.getInt("mgt");
                Date joindate = rs.getDate("joindate");
                double salary = rs.getDouble("salary");
                double bonus = rs.getDouble("bonus");
                int dept_id = rs.getInt("dept_id");

                /* 结果集获取后emp对象的set方法设置值内容 */
                emp.setId(id);
                emp.setEname(ename);
                emp.setJob_id(job_id);
                emp.setMgt(mgt);
                emp.setJoindate(joindate);
                emp.setSalary(salary);
                emp.setBonus(bonus);
                emp.setDept_id(dept_id);
                return emp;
            }
        });
        for (Object o : list) {
            System.out.println(o);
        }
    }
    /*-------------------------------------------------------------------------*/

    /* 6.查询所有记录,将其封装为Emp对象的List集合 */
    @Test
    public void test6_02() {
        /* 定义sql */
        String sql = "select * from emp";
        /* 执行sql */
        List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
        for (Emp e :list) {
            System.out.println(e);
        }
    }
    /*-------------------------------------------------------------------------*/

    /* 7.查询总记录数 */
    @Test
    public void test7() {
        /* 定义sql */
        String sql = "select count(id) from emp";
        /* 执行sql */
        Long aLong = template.queryForObject(sql, Long.class);
        System.out.println(aLong);
    }

}

标签:封装,DML,566,public,emp,template,sql,id,JDBCTemplate
From: https://www.cnblogs.com/agzq/p/16805798.html

相关文章