JdbcTemplate工具类

JdbcTemplate工具类的使用

1. JDBCTemplate的由来

原生的JDBC开发效率不高,而且我们需要时刻关注数据库连接的开与关,一不留神就出现内存溢出。
所以在此基础之上产生了很多个封装了jdbc操作的框架或者工具:JdbcTemplate,DBUtils,Hibernate,Mybatis,JPA等一堆关于数据库的操作。
JdbcTemplate 该工具是一个简单的jdbc封装工具类,性能好,开发效率高,学习成本低。
Spring组织开发的一个项目,Java工程师永远离不开Spring.
JdbcTemplate 只是对jdbc做一个简易的封装,MyBatis,JPA是框架,对jdbc做更深一层次的封装

2.用法

获取数据源:DataSource dataSource = JDBCPoolUtils.getDataSource();
得到一个jdbcTemplate对象,如果要得到该对象,必须传递一个 数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 执行SQL语句,完毕
int update = jdbcTemplate.update("update account set money=money-10 where name='Tom'");
不管是新增,修改,还是删除,都是使用update方法

3.查询的执行

1、queryForMap 结果是map集合,数据必须是一条,否则报错
2、queryForList 查询结果是list中有很多map
3、jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(Account2.class));
前提条件是:数据库中的表字段名和实体中的属性名完全一致才能使用。
4、如果属性和表中的字段有不一样的,可以使用如下方法:

		List<Account> list = jdbcTemplate.query(sql, new RowMapper<Account>() {
            @Override
            public Account mapRow(ResultSet resultSet, int i) throws SQLException {

                Account account = new Account();
                account.setId(resultSet.getInt("id"));
                account.setUsername(resultSet.getString("name"));
                account.setMoney(resultSet.getInt("money"));
                return account;
            }
        });

4.关于统计类:查询总记录数

 @Test
		    public void test7(){
		        String sql = "select count(id) from emp";
		        Long total = template.queryForObject(sql, Long.class);
		        System.out.println(total);
		    }
		
		}

5.批量操作

int[] arr={1,3};
        String sql = "delete from account where id=?";
        jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
                // 可以通过PreparedStatement 给 占位符? 赋值
                // 1 代表第一个问号
                // i 代表的是每次循环的一个下表 从0开始,有多少次,就会循环多少次
                preparedStatement.setInt(1,arr[i]);
            }

            @Override
            public int getBatchSize() {
                // 告诉我们的jdbcTemplate 我这次需要执行多少次
                return arr.length;
            }
        });
上一篇:Mybatisplus和JdbcTemplate的简单使用


下一篇:8、SpringJDBC