mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

JDBC是什么意思?

JDBC是使用java语言操作mysql数据库的规范,java语言必须按照这个规范写才可以操作mysql数据库。

mysql-connector-java

在最开始的时候 程序中是不允许使用java语言操作mysql数据库的 但是mysql-connector-java打破了这个局面。简单来说就是mysql-connector-java允许了可以通过java去操作mysql数据库。mysql-connector-java相当于是mysql数据库的客户端。

mysql-connector-java是Mysql提供的实现了JDBC定义的驱动,什么是JDBC呢?JDBC是一种规范,定义了Java语言该如何去操作数据库,也就是实现相关的API,是一种java语言操作数据库的接口规范。

相关代码

Connection connection = null;
Statement statement = null;
ResultSet rs = null;
int count;try {connection = dataSource.getConnection();statement = connection.createStatement();rs = statement.executeQuery("select count(*) from foo");if(rs.next()) {count = rs.getInt(0);}
} catch (SQLException exp) {throw new RuntimeException(exp);
} finally {if(connection != null) {try { connection.close(); } catch (SQLException exp) {}}if(statement != null) {try { statement.close(); } catch (SQLException exp) {}}if(rs != null) {try { rs.close(); } catch (SQLException exp) {}}
}

上面的代码是最原始的java操作mysql数据库的结构,可以说很麻烦,因此才有了后面的spring-boot-starter-jdbc。

spring-boot-starter-jdbc

spring-boot-starter-jdbc是Spring提供的,它基于mysql-connector-java又进行了封装,使得java操作mysql的方法更加的简单化了。
其实最主要的还是spring-boot-starter-jdbc中引入了操作mysql数据库的模板JdbcTemplate。我们上面已经说了JDBC其实就是表示一种规范,一种Java操作Mysql的规范 包括怎么连接mysql 怎么接收返回值 这个过程要怎么写?
所以JdbcTemplate类其实就是提供了一种新的JDBC模板,让我们之前的java操作mysql的规范更加的简单化了。

相关代码如下:

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
int count = jdbcTemplate.queryForObject("select count(*) from foo", Integer.class);
// 稍微复杂些的,代码来自下面提到的链接
public Book findBookInfo(String id) {String sql = "select * from tb_book where id=?";Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);return book;
}

也就是mysql-connector-java提供的是JDBC,而spring-boot-starter-jdbc提供的是更加简化版的JDBC-----JdbcTemplate。

mybatis-spring-boot-starter

mybatis-spring-boot-start是更加简化版的JDBC,它比起spring-boot-starter-jdbc提供的JDBC规范更加的简化。最大的特点就是SQL书写更加的舒服了,可以放到mapper.xml文件里面。而且sql书写可以和接口分开,什么意思呢?比方说mysql-connector-java提供的JDBC,写完sql语句之后 下面就要写调用接口了 如下图:
在这里插入图片描述
而spring-boot-starter-jdbc提供的JDBCTemplate新的规范,也是需要把sql语句和接口写在一块的 如下图:
在这里插入图片描述
但是如果是mybatis-spring-boot-starter的话,我们就可以把sql语句写到mapper.xml映射文件中,然后接口单独写到动态代理接口中,想要操作数据库的时候,直接调用动态代理接口就可以了 无需再在动态代理接口中传入sql语句,这样是不是方便了很多。
如下:

@Mapper
@Repository
public interface LoginDao {void insertUser(@Param("ID") String ID, @Param("password") String password, @Param("phone") String phone);
}
<mapper namespace="com.dao.LoginDao"><insert id="insertUser">INSERT INTO user(ID,phone,password)VALUES(#{ID},#{phone},#{password});</insert><select id="selectEquipment" resultType="Equipment">SELECT *FROM equipmentWHERE username = #{username}</select>
</mapper>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641808.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql-connector 交叉编译

1.下载 官网选择对应的系统以及版本&#xff0c;这里我用的是6.1.5https://downloads.mysql.com/archives/c-c/ 2.解压 tar -zxvf mysql-connector-c-6.1.5-src.tar.gz 3.先常规编译&#xff08;因为交叉编译的过程中&#xff0c;会用到生成的二进制文件&#xff09; cd m…

图像超分辨率技术在AI去衣中的应用探索

在数字图像处理领域&#xff0c;图像超分辨率&#xff08;Super-Resolution, SR&#xff09;技术一直是研究的热点之一。该技术旨在从低分辨率的图像中恢复出高分辨率的图像&#xff0c;以提供更清晰、更丰富的细节信息。近年来&#xff0c;随着人工智能&#xff08;AI&#xf…

【圆桌论坛】个人作为嘉宾参与问答环节的总结,Create 2024百度AI开发者大会之AI智能体开发与应用论坛

目录 ⭐前言⭐讨论话题✨本质和价值✨端侧部署✨应用商业模式✨商业模式 ⭐主题总结⭐有趣分享 ⭐前言 首先&#xff0c;非常荣幸和开心作为开发者和创业者代表参加百度Create AI大会分论坛圆桌论坛的问答环节。 在分论坛活动开始前&#xff0c;参加了文心智能体平台&#xff…

6. DAX 时间函数-- DATE 日期--FIRSTDATE \LASTDATE\DATESMTD\DATESQTD\DATESYTD

函数名目的语法返回值FIRSTDATE 返回指定日期列在当前上下文中的第一个非空日期。FIRSTDATE ( <日期列> )表 包含具有日期值的单列和单行的表。LASTDATE返回指定日期列在当前上下文中的最后一个非空日期。LASTDATE ( <日期列> )表 包含具有日期值的单列和单行的表。…

HCIP【路由过滤、路由引入实验】

目录 实验要求&#xff1a; 实验拓扑图&#xff1a; 实验思路&#xff1a; 实验步骤&#xff1a; 一、配IP地址 二、在相应的设备上配置RIP协议和OSPF协议 三、路由引入 四、路由过滤 五、配置静默接口 实验要求&#xff1a; 1、按照图示配置 IP 地址&#xff0c;R1&a…

nodejs切换

1.卸载nodejs 2.下载nvm工具 3.检查nvm安装情况 nvm -v3.nvm 安装命令 nvm install 10.16.34.查询nodejs版本 nvm list5.切换nodejs版本 nvm use 10.16.3

文心一言 VS 讯飞星火 VS chatgpt (243)-- 算法导论18.1 1题

一、B树中为什么不允许最小度数 t1&#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在B树中不允许最小度数 t1 的主要原因在于这样会导致树的结构退化为链表&#xff0c;失去了B树作为平衡多路搜索树的优势。当 t1 时&#xff0c;每个非根节点将只能…

什么是仪器校准报告?

在科学实验和工业生产中&#xff0c;仪器是一种非常重要的辅助工具&#xff0c;无论是测量数据、控制实验进程还是保证产品质量&#xff0c;仪器都发挥着至关重要的作用。为了确保仪器的准确性和稳定性&#xff0c;仪器校准报告这一概念应运而生。本文给大家详细介绍仪器校准报…

用于自动化机器陀螺仪传感器:XV7081BB

介绍一款用于自动化机器的数字输出型陀螺仪传感器XV7081BB。这款新推出的陀螺仪XV7081BB到底有什么魅力呢?我们可以用常用款用于智能割草机的XV7011BB作对比:XV7081BB提供16位或24位分辨率的角速率输出速率范围为400s。而XV7011BB采用16位角速度输出&#xff0c;检测范围为100…

YOLC: You Only Look Clusters for Tiny Object Detection in Aerial Images

摘要 由于以下因素,从航拍图像中检测物体面临着重大挑战:1)航拍图像通常具有非常大的尺寸,通常有数百万甚至数亿像素,而计算资源有限。2)物体尺寸较小导致有效信息不足,无法进行有效检测。3)物体分布不均匀导致计算资源浪费。为了解决这些问题,我们提出YOLC(You Onl…

设计模式-模板模式

模板设计模式 定义 在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 简单来说,有多个子类共有的方法,且逻辑相同,可以考虑作为模板方法。 模板的价值就在于骨架的定义,骨架内部将问题…

基于springboot实现中药实验管理系统设计项目【项目源码+论文说明】

基于springboot实现中药实验管理系统设计演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了中药实验管理系统的开发全过程。通过分析中药实验管理系统管理的不足&#xff0c;创建了一个计算机管理中药实验管…