03.01 spring中为什么是通过连接获取操作数据库的对象?

调调su


数据库作为一个提供了强大的关系型持久存储和查找的数据模型,通常操作数据库需要使用专门的结构化语言(SQL)进行操作,而连接不同的数据库(oracle,mysql,sqlserver等)所需要注册的驱动都不同,导致其他语言连接数据库存在困难!

而JAVA中抽象了一组连接数据库的接口和类,jdbc(JAVA database connectivity)专门为不同的数据库提供统一的标准进行连接,可以说无论连接数据库的框架怎么封装,底层都是使用的java jdbc!


下面看下jdbc连接数据库的步骤:

①,注册驱动:不同的数据库提供商会提供不同的驱动类进行注册使用,通常使用JNDI反射的方式进行,eg: Class.forName("com.mysql.jdbc.Driver");

②,创建连接:包括数据库连接地址,库,用户名和密码用于连接数据库服务并进行认证,eg:Connection connection = DriverManager.getConnection(x,x,x);

③,执行SQL:创建statement对象,获取执行sql的实例,调用SQL的执行方法!eg:Statement s =connnection.createStatement();s.excuteQuery("select * fron t");

④,组装结果:statement中执行方法会得到相应的返回值,使用resultSet进行接受后处理数据!eg:ResultSet r=s.excuteQuery();

String name =r.getString("name");

⑤,关闭连接:至关重要的一步,因为像oracle就是根据连接时间进行收费的,如果一直开着连接,破产指日可待!connection.close();

上面提到了,任何其他的JAVA框架(mybatis,hibenate,springTemplate等)基本都是封装了原生的jdbc进行操作数据库,所以免不了上诉几个步骤!


我们看到,对于数据库驱动注册,连接开启和关闭这些与业务无关的东西其实并不是开发者关心的,所以进一步的封装很有必要!

spring是怎么进行封装的呢?

1,封装驱动注册和连接:spring通过dbcp等数据源实现包,只需要配置数据库驱动信息,连接信息等就可以实现自动注册和连接数据库,并通过配置destroy-method =true就可以在自动关闭连接!

2,提供jdbcTemplate更为丰富的API,实现更加简便的开发流程,包括增删改查,batch处理等!

如下面代码所示:

jdbcTemplate.queryForInt("select count(*) from test"); //2. 查询一行数据并将该行数据转换为Map返回 jdbcTemplate.queryForMap("select * from test where name='name5'"); //3.查询一行任何类型的数据,最后一个参数指定返回结果类型 jdbcTemplate.queryForObject("select count(*) from test\

此生唯一



Spring Boot可以大大简化持久化任务,几乎不需要写SQL语句,在之前我们新建了一个

Spring Boot应用程序,本章在原有的工程中与数据库建立连接。

Spring Boot有两种方法与数据库建立连接,一种是使用,另一种集成,下面分别为大家介绍一下如何集成和使用这两种方式。

1. 使用JdbcTemplate

在resource文件夹下添加application.properties配置文件并输入数据库参数,内容如下:

新建Controller类测试数据库连接,实例如下:

运行App输入地址输出数据库数据。

2. 集成Mybatis

添加mybatis依赖,在pom.xml文件中增加如下:

在resource文件夹下添加application.properties配置文件并输入数据库参数,如下:

依次添加mapper的接口类和xml文件,类分别如下:

AppMessageMapper.java

AppMessageMapper.xml

AppMessage.java

AppMessageService.java

APPMessageController.java

问题描述?

SpringBoot扫描包提示找不到mapper的问题,异常信息:

分析原因

项目的Bean装配默认规则是根据类所在的包位置从上往下扫描,“类”是指项目入口类。如果类所在的包为:,则只会扫描包及其所有子包,如果service或dao所在包不在及其子包下,则不会被扫描。

解决方法

方式一:使用注解,其中,为包路径。

方式二:将启动类放在上一级包中,注意的是启动类必须要保证在包的根目录下。


优秀的程序员


java操作关系型数据库的底层都是JDBC

下面看下jdbc连接数据库的步骤:

①,注册驱动

②,创建连接

③,执行SQL

④,组装结果

⑤,关闭连接

任何其他的JAVA框架(mybatis,hibenate,springTemplate等)基本都是封装了原生的jdbc进行操作数据库,所以免不了上诉几个步骤

只看到一位仁兄答对!@哎哟JAVA不错


回答完毕谢谢!!

本人专注大数据,数据采集,数据处理,数据治理,希望大家多多交流学习!


分享到:


相關文章: