JDBC的回顾 与 Mybatis的简介

一、J D B C 编程和 ORM 模 型

1.JDBC回顾
  1. 加载驱动 导入 JDBC 连接数据库的 jar 包,利用 CLASS.forName 加载驱动;
  2. 获取连接 利用 DriverManager 获取 Connection,然后创建 Statement ;
  3. 执行SQL语句 利用 Statement 执行 SQL 语句并结 合 ResultSet 处理结果集映射 Java 对象;
  4. 关闭资源 先开后关的顺序关闭 ResultSet , Statement ,Connection 等资源。
2.JDBC的弊端
  1. 硬编码 SQL语句存在Java代码中,不能很好的分离数据库语句和 Java语句,造成代码不易维护;
  2. SQL参数固定 SQL语句的参数固定,使得SQL语句不灵活,无法满足多变的场景。
  3. 代码重复度高 大量的重复代码,以 ResultSet 为例,每次都需要重复解析结果集;
  4. 底层技术 JDBC属于底层的技术,不支持分布式,缓存等技术,对于复杂场景的应对不好;
3.Java类和数据库表的5个映射关系
  • Java类对应数据库
  • Java属性对应数据库字段
  • 映射类型
  • 用集合映射表结果
  • 一行记录(实体)映射new对象
4.什么是ORM模型

        ORM 模型是数据库的表和简单 Java 对象(Plain Ordinary Java Object,简称 POJO)的映射关系模型,主 要解决数据库数据和 POJO 对象的相互映射。

Java对象POJO 对象(Plain Ordinary Java Object): 简单的 Java 对象,实际就是 普通 JavaBeans。
映射配置配置分为:类与数据库中表 的映射;对象与表中记录的 映射;类的属性与数据库中 表的字段的映射。
数据库按照数据结构来组织、存储 和管理数据的仓库,ORM 模型中最底层的内容。
5.常见的ORM模型

Hibernate:

Hibernate 是一个 全自动 的 ORM 模 型,Hibernate 可以自动生成 SQL 语 句,自动执行.

MyBatis:

MyBatis 是一款 半自动 的 ORM 模型,它支持定 制化 SQL、存储过程以及高级映射.

6.Mybatis和hibernate 区别:

1. Hibernate是全自动化ORM; Mybatis是半自动化ORM。

2. Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上; Mybatis需要手写SQL语句以及结果映射。

3. Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降; Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。

4. Hibernate 不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂, 对多字段的结构进行部分映射困难; Mybatis 不仅可以做SQL优化还可以SQL与Java分离,还可以自行编写映射关系, 复杂的SQL语句Mybatis效率更高

7. mybatis 解决了jdbc 的问题:

1.数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。 解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。


2.Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。 解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。


3.向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。 解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。


4.对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象 解析比较方便。 解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。


二、M y B a t i s 简介

1.什么是MyBatis

        MyBatis是一款ORM模型,支持定制化 SQL、存储过程以及高级映射。可以使用简单的 XML 或注解来配置和映射 原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录

半自动化:

        支持定制化 SQL、存储过程以及高级映射;

集成方便:

        不仅方便 Spring 等 JavaEE 框架的集成,还与其他 ORM 模型集成也很方便。

2.为什么选择MyBatis
  • 简单易学: 易于学习,易于使用,通过文档和源 代码,可以比较完全的掌握它的设计 思路和实现;
  • 灵活度高:通过定制 SQL 语句,可以比较灵活的 访问数据库,获取数据;
  • 功能完整:提供了连接管理,缓存支持,线程支 持,(分布式)事务管理等功能,还 提供了其他 ORM 模型的支持。
3. MyBatis的开始 

 01 引入 mybatis-config.xml 配置文件

        该配置文件主要是连接数据库所需的配置信息

02 引入 Mapper 映射文件

        配置 SQL 语句和映射的配置文件

03 创建 MyBatisUtil 类

        用来创建 MyBatis 的数据库SqlSession会话类

04 创建 SqlSession 类访问数据库

        创建出 SqlSession 后,利用 SqlSession 访问数据库

05 输出结果

        查询数据库的学生表信息,并输出学生姓名和学生学号。

4.构建项目架构

(1)创建项目并导入需要的jar包

        特别注意除了导入MyBatis的jar包之外还需要导入 mysql的驱动包

(2) 将配置文件放入项目

放入配置文件

        主配置文件一定要放入,日志配置可以选择不放入

(3)主配置文件代码

放入配置文件

        主配置文件一定要放入,日志配置可以选择不放入

mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/schoolp?serverTimezone=GMT" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
	<!-- 文件路径 -->
		<mapper resource = "com/zad/mapper/StudentMapper.xml"/>
	</mappers>
</configuration>

(4)创建需要的代码文件

        实体类和 接口文件跟之前的jdbc一样,这里我们把 sql语句放到了sqlMapper文件中,让sql语句进入 到了配置文件中从而解决sql硬编码问题

(5)sqlMapper.xml代码

配置文件代码

        除了sql语句之外其他的配置信息都可以在官方文档 进行参考编写

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- 
 	sqlMapper 文件:执行方法和sql语句映射
  -->
<mapper namespace="test">
<!-- 类路径 -->
	<select id="findstudentall" resultType="com.zad.bean.Student"> 
		select * from student
	</select>
	
	<select id="findstudent" resultType="com.zad.bean.Student"> 
		select * from student where sid = #{sid};
	</select>
	
	<delete id = "delstu" parameterType="int">
	delete from student where sid = #{sid};
	</delete>
	
	<insert id = "tianjiaxuesheng" parameterType="com.zad.bean.Student">
	
		insert into student (sname,birthday,ssex,classid) 
		values(#{sname},#{birthday},#{ssex},#{classid});
	</insert>
	
	<update id = "updateStudent" parameterType="com.zad.bean.Student">
		update student set sname = #{sname},birthday=#{birthday},ssex=#{ssex},classid=#{classid};
	</update>
	
</mapper>

 (6)创建SqlSession

三、MyBatis生命周期

1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。

2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句, 需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以 加载多个映射文件,每个文件对应数据库中的一张表。

3)构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。

4)创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的 所有方法。

5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。

6)MappedStatement 对象:在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。

7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型 和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数 的过程。

8)输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类 型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【标题】"语音识别的一个matlab程序"是一个与语音处理和模式识别技术相关的项目,它使用MATLAB编程语言实现。MATLAB是MathWorks公司开发的一种数值计算和数据可视化环境,广泛应用于工程、科学和数学领域,尤其在信号处理和机器学习方面有很强的功能。 【描述】提到的"在一个网站看到,大家分享一下"表明这是一个社区共享的资源,可能来源于一个在线论坛或编程交流平台。这样的共享行为旨在促进技术交流和学习,让其他对语音识别感兴趣的用户能够参考、学习和改进代码。 【标签】"语音识别"是这个项目的关键词,意味着该程序涉及将人类语音转化为文本或命令的过程。语音识别技术的核心是将音频信号转换为可理解的数据,这通常包括预处理、特征提取、模型训练和匹配等步骤。 在提供的【压缩包子文件的文件名称列表】中,我们可以推断出这个MATLAB程序的组成部分: 1. `demo.m`:通常是演示脚本,用于展示程序的主要功能和用法,用户可以通过运行这个文件快速了解程序的工作原理。 2. `.p` 文件(melfb.p, mfcc.p, vqlbg.p, disteu.p, test.p, blockFrames.p, train.p):这些是MATLAB的编译函数文件,可能包含特定的算法实现,如梅尔频率倒谱系数(MFCC)提取、声学建模、距离计算、训练和测试等功能。例如: - `melfb.p` 可能实现了梅尔滤波器组,用于对语音信号进行频谱分析。 - `mfcc.p` 可能负责MFCC的计算,这是语音识别中常用的特征提取方法。 - `train.p` 和 `test.p` 可能分别对应模型的训练和测试过程。 3. `Read Me.txt`:通常包含关于如何使用、配置和运行程序的说明和指导。 4. `www.pudn.com.txt`:可能指向源文件的下载地址或发布者的信息,PUDN(太平洋下载网)是一个提供各类资源下载的网站。 这个MATLAB程序可能涵盖了语音识别的完整流程,包括预处理、特征提取、模型训练和评估。通过运行`demo.m`,用户可以体验整个识别过程,并可根据源代码深入了解语音识别的实现细节。对于学习和研究语音识别技术的人来说,这是一个宝贵的实践资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值