4、spring详解-spring DAO

        开发中的dao层,是对数据库操作以及相关问题的处理。spring DAO模块,是spring框架对dao层操作的支持与优化。

一、jdbc基础

在没有spring之前,jdbc承担着对数据库操作的重任。主要包括以下几个部分:

        1、驱动引入
        JDBC是对外开放的接口,数据库提供商实现了这些接口,这些接口的组合就是驱动。数据库有好多种,例如MySQL、Oracle等,需要注册不同的驱动来操作对应的数据库,所以首先要将驱动引入项目。

        2、注册驱动
        引入驱动之后,加载注册驱动,让应用程序知道,我们将访问什么数据库。

        3、创建连接
        数据库和应用程序是分隔开来的,数据库可能存放在远程其他服务中,所以注册驱动之后,我们要把应用程序跟数据库连接到一起。

        4、执行操作
        连接上之后就是处理我们常用操作:增、删、改、查等。

        5、返回结果
        数据库执行完增、删、改、查操作结束之后,返回给程序一个结果,成功、失败或者查询的数据。

        6、释放资源
        最后,所有操作都执行完毕,需要关闭资源,以免造成资源的浪费。

二、jdbc实例

        1、引入mysql依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
</dependency>

        2、执行逻辑:

// 注册驱动
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test-project?useUnicode=true" +
        "&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false", "root", "123456");

// 通过Statement对象执行操作
Statement stmt = conn.createStatement();

String sql = "select * from test_genterator limit 10";
// 返回结果
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
    System.out.println("姓名:" + rs.getString("name")
                    + "  类型:" + rs.getInt("type")
                    + "  描述:" + rs.getDouble("test_desc")
                    + "  备注:" + rs.getDouble("remark"));
}

        3、测试结果:

姓名:1  类型:1  描述:1.0  备注:1.0
姓名:2  类型:2  描述:2.0  备注:2.0
姓名:3  类型:3  描述:3.0  备注:3.0
姓名:4  类型:4  描述:4.0  备注:4.0
姓名:5  类型:5  描述:5.0  备注:5.0

三、spring对jdbc的支持

       jdbc每次执行,都要经历加载驱动、连接数据库、执行操作、释放资源等繁重的重复操作。对此,spring对jdbc进一步优化与封装。把加载驱动、连接数据库与释放资源等重复操作提取出来,做成公共的独立模块,使用时只需调用即可,方便简洁,这便是jdbcTemplete。

        1、引入依赖:

// jdbc
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.7.10</version>
</dependency>

//数据源
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

         2、执行逻辑:

// 设置数据源
DruidDataSource build = DruidDataSourceBuilder.create().build();
build.setDriver(new com.mysql.cj.jdbc.Driver());
build.setUrl("jdbc:mysql://127.0.0.1:3306/test-project?useUnicode=true" +
        "&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false");
build.setUsername("root");
build.setPassword("123456");

// 创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(build);

// 执行查询,并返回结果
String sql = "select * from test_genterator limit 10";
List<TestGenterator> testGenterators = jdbcTemplate.query(sql, new BeanPropertyRowMapper<TestGenterator>(TestGenterator.class));
for (TestGenterator testGenterator : testGenterators){

    System.out.println("姓名:" + testGenterator.getName()
            + "  类型:" + testGenterator.getType()
            + "  描述:" + testGenterator.getTest_desc()
            + "  备注:" + testGenterator.getRemark());

        3、测试结果:

姓名:1  类型:1  描述:1  备注:1
姓名:2  类型:2  描述:2  备注:2
姓名:3  类型:3  描述:3  备注:3
姓名:4  类型:4  描述:4  备注:4
姓名:5  类型:5  描述:5  备注:5

        4、结论:

        spring DAO引入JdbcTemplate,让我们只需要创建一个代有数据源的JdbcTemplate对象,就可以执行crub,代码清晰简洁。

        JdbcTemplate实现JdbcOperations接口里面的众多对数据库操作的方法,例如query、updated等等。

        JdbcTemplate继承JdbcAccessor抽象类,获取数据源dataSource。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值