jdbcTemplate

Author Avatar
丁起男 07月 10,2020
  • 在其它设备中阅读本文章

jdbcTemplate

jdbcTemplate是spring对jdbc的封装,目的是使jdbc更加易于使用

在jdbcTemplate中执行sql的语句大致分为:

  • execute:可以执行所有sql,一般用于执行DDL语句
  • update:用于执行insert、update、delete等DML语句
  • queryXxx:用于DQL数据查询语句

DQL

当查询单个值时

@Test
void count() {
    String sql = "select count(*) from t_user"
	Integer integer = jdbcTemplate.queryForObject(sql,Integer.class);
    System.out.println("count...:"+integer);
}
  • 使用queryForObject()查询单个值

查询单个字段集合

	@Test
    void selectList(){
        String sql = "select username from t_user";
        List<String> strings = jdbcTemplate.queryForList(sql, String.class);
        System.out.println(strings);
    }
  • 使用queryForList()查询单个字段的集合形式

返回map类型

@Test
    void selectMap(){
        Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap("select * from t_user where id=1");
        System.out.println(stringObjectMap);
    }
  • 使用queryForMap查询一个map类型(字段名是key,值是value)

查询对象

	@Test
    void selectObj2(){
        String sql = "select * from t_user where id = ?";
        User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), 1);
        System.out.println(user);
    }
  • 使用queryForObject查询对象
  • 使用BeanPropertyRowMapper进行对象封装

查询对象集合

	@Test
    void selectObjList(){
        String sql = "select * from t_user";
        List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
        System.out.println(users);
    }
  • 使用query查询对象集合
  • 使用BeanPropertyRowMapper进行对象封装

自定义结果封装

	@Test
    void selectObj(){
        List<User> query = jdbcTemplate.query("select * from t_user", new RowMapper<User>() {
            @SneakyThrows
            @Override
            public User mapRow(ResultSet resultSet, int i) {
                return new User()
                        .setId(resultSet.getLong("id"))
                        .setUsername(resultSet.getString("username"))
                        .setAge(resultSet.getInt("age"));
            }
        });
        System.out.println("query...:"+query);
    }
  • 通过RowMapper接口设置返回值
  • BeanPropertyRowMapper是官方提供的实现类

DML

  • 一律使用update方法,也可以使用execute
  • 返回作用行数

增加

	@Test
    void insert(){
        int insert = jdbcTemplate.update("insert into t_user value(default,?,?)","abc",30);
        System.out.println("insert...:"+insert);
    }

修改

	@Test
    void update(){
        int update = jdbcTemplate.update("update t_user set username = ? where id = ?","abc",1);
        System.out.println("update...:"+update);
    }

删除

	@Test
    void delete(){
        int delete = jdbcTemplate.update("delete from t_user where id = ?",1);
        System.out.println("delete...:"+delete);
    }

DDL

	@Test
    void ddl(){
        jdbcTemplate.execute("create table aaa (id bigint(20) not null,a_name varchar(50) not null )");