zoukankan      html  css  js  c++  java
  • JAVA JDBC Template的使用

    JAVA JDBC Template的使用

    什么是Template?

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

    Template使用步骤

    1. 导入jar包

    2. 创建JdbcTemplate对象。依赖于数据源DataSource
      * JdbcTemplate template = new JdbcTemplate(ds);

    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 JDBC;
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    public class DruidUtils {
        private static DataSource dataSource=null;
    //获取数据库连接池
        public static DataSource getDataSource() {
            return dataSource;
        }
        //关闭statement,归还connection
        public static  void close(Statement statement, Connection connection){
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void setDataSource(DataSource dataSource) {
            DruidUtils.dataSource = dataSource;
        }
    
        static {
            try {
                //加载配置文件经内存
                Properties properties = new Properties();
                InputStream resourceAsStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
                properties.load(resourceAsStream);
                 dataSource = DruidDataSourceFactory.createDataSource(properties);
            } catch (IOException e) {
                System.out.println(e);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static  Connection getConnection() throws SQLException {
            return  dataSource.getConnection();
        }
    }
    

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

    1.query():查询结果,将结果封装为JavaBean对象

    package JDBC;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import javax.sql.DataSource;
    import java.sql.SQLException;
    import java.util.List;
    public class Template {
        public static void main(String[] args) throws SQLException {
           //获取数据库连接池
            DataSource dataSource = DruidUtils.getDataSource();
            //获取template对象
            JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
            //定义sql语句
            String sql="select *from count";
            //执行sql
            List<Person> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Person>(Person.class));
            for (Person person : list) {
                System.out.println(person);
            }
        }
    }
    

    * 2. 添加一条记录

    @Test
    			    public void test2(){
    			        String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";
    			        int count = template.update(sql, 1015, "郭靖", 10);
    			        System.out.println(count);
    			
    			    }
    

    3.删除刚才添加的记录

    @Test
    			    public void test3(){
    			        String sql = "delete from emp where id = ?";
    			        int count = template.update(sql, 1015);
    			        System.out.println(count);
    			    }
    			
    

    4.查询id为1001的记录,将其封装为Map集合

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

       @Test
    				    public void test4(){
    				        String sql = "select * from emp where id = ? or id = ?";
    				        Map<String, Object> map = template.queryForMap(sql, 1001,1002);
    				        System.out.println(map);
    				        //{id=1001, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}
    				
    				    }
    

    5. 查询所有记录,将其封装为List

      @Test
    				    public void test5(){
    				        String sql = "select * from emp";
    				        List<Map<String, Object>> list = template.queryForList(sql);
    				
    				        for (Map<String, Object> stringObjectMap : list) {
    				            System.out.println(stringObjectMap);
    				        }
    				    }
    

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

      @Test
    				    public void test6(){
    				        String sql = "select * from emp";
    				        List<Emp> list = template.query(sql, new RowMapper<Emp>() {
    				
    				            @Override
    				            public Emp mapRow(ResultSet rs, int i) throws SQLException {
    				                Emp emp = new Emp();
    				                int id = rs.getInt("id");
    				                String ename = rs.getString("ename");
    				                int job_id = rs.getInt("job_id");
    				                int mgr = rs.getInt("mgr");
    				                Date joindate = rs.getDate("joindate");
    				                double salary = rs.getDouble("salary");
    				                double bonus = rs.getDouble("bonus");
    				                int dept_id = rs.getInt("dept_id");
    				
    				                emp.setId(id);
    				                emp.setEname(ename);
    				                emp.setJob_id(job_id);
    				                emp.setMgr(mgr);
    				                emp.setJoindate(joindate);
    				                emp.setSalary(salary);
    				                emp.setBonus(bonus);
    				                emp.setDept_id(dept_id);
    				
    				                return emp;
    				            }
    				        });
    				
    				
    				        for (Emp emp : list) {
    				            System.out.println(emp);
    				        }
    				    }
    				
    

    7. 查询总记录数

      @Test
    				    public void test7(){
    				        String sql = "select count(id) from emp";
    				        Long total = template.queryForObject(sql, Long.class);
    				        System.out.println(total);
    				    }
    				
    				
    
    			以上就是Template的一些知识点,如有错误还请各位批评指正,喜欢我的可以点赞收藏加关注,嘻嘻
    

    在这里插入图片描述

  • 相关阅读:
    html 上传图片前预览
    php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
    php 计算 pdf文件页数
    php 获取半年内每个月的订单数量, 总价, 月份
    php 获取两个数组之间不同的值
    小程序支付功能
    关于nginx的Job for nginx.service failed because the control process exited with error code.错误
    linux 安装 Apollo
    MongoDB待续。。。
    ABP vNext...待续
  • 原文地址:https://www.cnblogs.com/pjhaymy/p/13390023.html
Copyright © 2011-2022 走看看