美文网首页
JDBC系列(下篇)——JDBC Template的使用

JDBC系列(下篇)——JDBC Template的使用

作者: moutory | 来源:发表于2021-03-25 11:58 被阅读0次

前言

使用原生JDBC的API进行代码编写时,总得一遍遍去写结果集的拆解和对象的封装,那么这些重复性的工作和代码有没有一种方式可以帮我们解决呢?答案当然是有的,比如DBUtils、JDBC Template和MyBatis等众多工具或者持久层框架,都帮我们解决了这个问题。本篇文章将对JDBC Temlate这种持久层的技术使用进行讲解

想要了解更多关于JDBC的知识,可以参考本系列文章:
JDBC系列(上篇)——数据连接池的应用


一、JDBC Template简介

JDBC Template是Spring框架对JDBC的简单封装,提供了一个Template对象来简化我们持久层的开发。这个模板支持简单的JDBC数据库访问功能以及基于索引参数的查询。
JdbcTemplate 类继承自抽象类 JdbcAccessor,同时实现了 JdbcOperations 接口。其直接父类 JdbcAccessor 为子类提供了一些访问数据库时使用的公共属性。

二、JDBC Template的使用

步骤一:引入Maven依赖

这里需要注意,JDBC Template还依赖了Spring其他核心的包,所以这里我们可以直接引入springmvc的依赖

        <!-- Spring-jdbc 用于配置JdbcTemplate -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
      <!-- 引入springmvc 依赖包,里面有spring其他beans、core等核心包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>

步骤二:使用JDBC Template进行CRUD操作

使用JDBC Template需要我们提前准备好数据库连接池Data Source,可以使用代码的方式注入,也可以使用配置文件的方式注入。这里的话,我们不对连接池的部分进行讲解,主要讲解Template的应用。

DML操作

新增、修改、删除的操作基本只要调用update()方法就可以实现,对于缺省参数的使用,不需要再和之前一样需要调用很多次setStringserInt方法才可以把值封装好。

public class UserDaoImpl  {

    private JdbcTemplate template = new JdbcTemplate(DruidPoolUtils.getDataSource());


    public boolean updateUser(){
        int result = template.update("update user set password = ? where uid = ?", "123456", 2);
        return result>0;
    }

    // 删除记录也是用update方法
    public boolean deleteUser(){
        int result = template.update("delete from user where uid = ?", 4);
        return result>0;
    }

    // 新增记录也是用insert方法
    public boolean insertUser(){
        int result =template.update("insert into user(username,password) values(?,?)","xiaoqi",88888888);
        return result>0;
    }

DQL操作

对于查询操作,JDBC Template提供了较多的API供我们去使用,我们可以根据需要来获取我们想要返回的结果

public class UserDaoImpl  {

    private JdbcTemplate template = new JdbcTemplate(DruidPoolUtils.getDataSource());

    // 结果集封装为Map对象
    public void queryTes1t(){
        Map<String, Object> map = template.queryForMap("select * from user where username = ?", "xiaohong");
        System.out.println(map.toString());
    }

    // 结果集封装为自定义对象的List集合,比较常用
    public void queryTest2(){
        List<Map<String, Object>> list = template.queryForList("select * from user where username = ?", "xiaohong");
        for (Map<String, Object> stringObjectMap : list) {
            System.out.println(stringObjectMap);
        }
    }

    // 结果集封装为对象
    public void queryTest3(){
        List<User> list = template.query("select * from user where uid = ?", new BeanPropertyRowMapper<User>(User.class), 3);
        System.out.println(list);
    }

    // queryForObject -》 常用于查询聚合函数的值
    public void queryTest4(){
        Long result = template.queryForObject("select count(*) from user",Long.class);
        System.out.println(result);
    }

}

至此,对于JDBC Template的介绍就到此结束啦。我们只要掌握其基本的api使用,可以做到在日常工作中应用即可。

最后再说说个人的一些小观点

其实JDBC Template和DBUtils本质上都是对原生JDBC的API进行的封装,只是前者归属在Spring大家族中,相对来说拓展性更好,而对于HibernateMybatis而言,这两者已经算是比较完整成熟的ORM框架了,支持的功能要更为强大,当然使用起来的学习成本也会更高。大家在应用中需要根据实际情况来选择,如果只是比较小的项目,选择更为轻量的DBUtils和JDBC Template未尝不是更好的选择

相关文章

网友评论

      本文标题:JDBC系列(下篇)——JDBC Template的使用

      本文链接:https://www.haomeiwen.com/subject/ywckhltx.html