Spring Boot 整合JdbcTemplate(附多种方法解析)

博客主页:我的主页
欢迎点赞 收藏 留言 欢迎讨论!
本文由 【泠青沼~】 原创,首发于 CSDN
由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!个人主页


目录

  • 一、整合POM.XML文件
  • 二、测试实体类
  • 三、测试业务类
    • 3.1、注册JdbcTemplate
    • 3.2、增加方法(两种不同用法)
    • 3.3、删除方法
    • 3.4、修改方法
    • 3.5、查询方法(两种实用方法)
  • 四、总结


Spring对数据库的操作在jdbc上面做了更深层次的封装,而JdbcTemplate便是Spring提供的一个操作数据库的便捷工具。我们可以借助JdbcTemplate来执行所有数据库操作,例如插入,更新,删除和从数据库中检索数据,并且有效避免直接使用jdbc带来的繁琐编码

一、整合POM.XML文件

不仅要加入jdbc依赖,还要加入数据库驱动依赖(这里加入mysql)

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-jdbcartifactId>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>

二、测试实体类

public class User {
    private Integer id;
    private String username;
    private String password;
    GET和SET方法省略...
}

三、测试业务类

3.1、注册JdbcTemplate

 @Autowired
 JdbcTemplate jdbcTemplate;

3.2、增加方法(两种不同用法)

    public int adduser(User user){
        int i = jdbcTemplate.update("insert into user (username,password)values (?,?)", user.getUsername(), user.getPassword());
        return i;
    }

下方的方法通过GeneratedKeyHolder可以拿到在插入数据库数据之后,数据库分配给此项数据的ID,并返回给后台

public int adduser2(User user){
        GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
        int update = jdbcTemplate.update(new PreparedStatementCreator() {
            @Override
            public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
                PreparedStatement ps = con.prepareStatement("insert into user (username,password)values (?,?)", Statement.RETURN_GENERATED_KEYS);
                ps.setObject(1, user.getUsername());
                ps.setObject(2, user.getPassword());
                return ps;
            }
        }, keyHolder);
        user.setId(keyHolder.getKey().intValue());
        return update;
    }

3.3、删除方法

    public int deletebyid(int id){
        int update = jdbcTemplate.update("delete from user where id=?", id);
        return update;
    }

3.4、修改方法

    public int updatebyid(int id,String username){
        int update = jdbcTemplate.update("update user set username=? where id=?", username,id );
        return update;
    }

3.5、查询方法(两种实用方法)

方法比较繁琐,但是灵活性较高,对属性的命名没有较高的要求

    public List<User> getAll(){
        List<User> list = jdbcTemplate.query("select * from user", new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                String id = rs.getString("id");
                String username = rs.getString("username");
                String password = rs.getString("password");
                user.setUsername(username);
                user.setId(Integer.valueOf(id));
                user.setPassword(password);
                return user;
            }
        });
        return list;
    }

方法简单,便捷高效,但是对数据库表列名和实体类的属性名字有较高的要求,需要两者名字必须一致

    public List<User> getAll(){
        List<User> list = jdbcTemplate.query("select * from user", new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                String id = rs.getString("id");
                String username = rs.getString("username");
                String password = rs.getString("password");
                user.setUsername(username);
                user.setId(Integer.valueOf(id));
                user.setPassword(password);
                return user;
            }
        });
        return list;
    }

四、总结

在大部分情况下,我们都会直接使用更加强大的持久化框架来访问数据库,比如MyBatis、Hibernate或者Spring Data JPA,我们这里讲解JdbcTemplate的整合,只是告诉大家有这么一种操作数据库的方式

你可能感兴趣的:(SpringBoot,spring,boot,java,mysql,spring,mvc)