JdbcTemplate与NamedParameterJdbcTemplate

JdbcTemplate提供的方法:

execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;

batchUpdate方法用于执行批处理相关语句;

query方法及queryForXXX方法:用于执行查询相关语句;call方法:用于执行存储过程、函数相关语句

查询单个对象/查询count,avg,sun返回唯一值:queryForobject   查询多个对象:query

  @Test
    public void testQuery(){
        String sql = "select id,username,password from user where id=?";

        BeanPropertyRowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
        User user = jdbcTemplate.queryForObject(sql, rowMapper,1);
        System.out.println(user);
    }
 @Test
    public void testMutiQuery(){
        String sql = "select id,username,password from user";

        BeanPropertyRowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
        List<User> users = jdbcTemplate.query(sql, rowMapper);
        for (User user : users) {
            System.out.println(user);
        }
    }
 @Test
    public void testCountQuery(){
        String sql = "select count(*) from user";

        BeanPropertyRowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
        Integer result = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(result);
    }

update用于增删改:

增加:

 @Test
    public void testCreate(){
        String sql = "insert into user (username,password) values (?,?)";
        int create = jdbcTemplate.update(sql, new Object[]{255, 255});
        System.out.println(create);
    }

修改:

  @Test
    public void testUpdate(){
        String sql = "update user set username=? , password=? where id=?";
        int update = jdbcTemplate.update(sql, new Object[]{256, 256,3});
        System.out.println(update);
    }

删除:

 @Test
    public void testDelete(){
        String sql = "delete from user where id=?";
        int delete = jdbcTemplate.update(sql, new Object[]{3});
        System.out.println(delete);
    }

批量操作:

  @Test
    public void testBatch(){
        List<Object[]> batchArgs=new ArrayList<Object[]>();
        batchArgs.add(new Object[]{777,888});
        batchArgs.add(new Object[]{666,888});
        batchArgs.add(new Object[]{555,888});
        String sql = "insert into user (username,password) values (?,?)";
        jdbcTemplate.batchUpdate(sql, batchArgs);
    }



NamedParameterJdbcTemplate:

具名参数namedparam: SQL 按名称(以冒号开头)而不是按位置进行指定. 具名参数更易于维护, 也提升了可读性. 具名参数由框架类在运行时用占位符取代

 @Test
    public void testNamedParameter(){
        String sql = "insert into user (username,password) values (:username,:password)";
        User u = new User();
        u.setUsername("555");
        SqlParameterSource sqlParameterSource=new BeanPropertySqlParameterSource(u);
        namedParameterJdbcTemplate.update(sql,sqlParameterSource);
    }
转载自:http://catalinali.top/2017/useJDBC/




猜你喜欢

转载自blog.csdn.net/wang1253/article/details/80049146