MyBatis入门程序详解

news2025/2/24 1:56:59

目录

一、MyBatis概述

二、编写MyBatis入门程序

三、配置SQL提示

四、传统jdbc的劣势


一、MyBatis概述

        MyBatis是一个基于Java的持久层框架,它内部封装了JDBC操作,使得开发人员可以更专注于SQL语句本身而非繁琐的JDBC操作细节。在MyBatis中,SQL语句可以被配置在XML文件中,或者通过注解方式进行。这种分离使得SQL语句更加模块化和可重用。MyBatis还支持动态SQL,允许开发者根据不同情况构建复杂的SQL语句,而无需编写大量的Java代码。

二、编写MyBatis入门程序

按照如下步骤创建一个springboot+mybatis工程:

 我遇到了Failure to find org.springframework.boot:spring-boot-starter-parent:pom:3.3.1.RELEASE问题,

这通常是由于以下原因之一造成的:

  1. Maven仓库中没有找到所需的依赖项。(我查看我中央仓库没有问题)
  2. 依赖项的坐标不正确或版本号不匹配。

通过修改我的依赖坐标解决了问题:

随后我遇到新的问题:(Error:java: 无效的源发行版: 13)

引起上述问题的原因是因为JDK版本不对应,通过修改下述的地方解决了问题,我使用的jdk8。

到这里已经差不多创建成功了,但是去运行测试代码还是会出现一些小错误(Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
),但是请别紧张,这是因为没有指定'url'属性,也没有配置嵌入式数据源。

例如,如果你使用的是Spring Boot和MySQL数据库,你可以在application.propertiesapplication.yml文件中添加以下配置:

spring.application.name=demo
#配置数据库的连接信息 - 四要素
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234

这里要更改为自己对象信息,我的仅供参考。

到这一步你离成功又近了一步,恭喜你!

 

创建了User实体类,它有如下属性,属性与数据库中的列名对象。

 编写测试代码,打开创建代码生成的test类

添加如下代码:

 @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser(){
        List<User> userList = userMapper.list();
        userList.stream().forEach(user -> {
            System.out.println(user);
        });
    }

结果如下:

如果结果出现你想查询的东西,恭喜你入门程序编写成功。

三、配置SQL提示

默认在mybatis中编写SQL语句是不可识别的,只是一个简单的字符串,不管你写成什么都不会报错,但是程序运行会报错。可以做如下配置:

选中SQL语句右击,按下述操作进行

操作完你会发现SQL语句变成其他颜色,你现在可以把SQL语句删除,然后看看有没提示。

现在还存在一些小小的问题

这意味着系统无法找到名为'user'的表,"No data sources are configured to run this SQL and provide advanced code assistance." 表示当前没有配置数据源来运行此SQL并提供高级代码辅助功能。

产生的原因:idea和数据库没有建立连接,不识别表信息

解决方式:在idea中配置MySQL数据库连接

 

遇到Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.错误

mysql默认时区与当前的时区冲突。解决方法:

由于本机安装的mysql版本是5.7的,那么IDEA要连接mysql也应该匹配相应的驱动版本,把Driver改成MySQL for 5.1就可以了

进过上述配置在程序编写过程中就可以识别SQL语句的错误了。

四、传统jdbc的劣势

  • 频繁创建释放连接:在传统的JDBC操作中,每次数据交互都需要创建和关闭数据库连接,这不仅消耗时间,还可能导致系统资源的浪费。
  • SQL语句硬编码:传统JDBC常常需要在Java代码中直接编写SQL语句,这使得任何SQL的修改都需要重新编译和发布代码,不利于维护。
  • 参数设置困难:使用PreparedStatement时,参数的传递需要硬编码,对应不同条件需要不断修改代码,进一步降低了灵活性和可维护性。
  • 重复代码多:结果集的处理通常包含大量重复代码,且需要手动将数据记录映射到Java对象,这一过程不仅繁琐,也容易出错。

        综上所述,传统JDBC虽然在底层操作和跨平台性上有其优势,但在现代开发中存在不少劣势,如资源管理不当、代码硬编码、面向对象编程支持不足等。这些缺点在快节奏、高维护性要求的开发背景下尤为明显。因此,许多现代框架如MyBatis等应运而生,旨在解决这些传统问题,提升开发效率和系统性能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试面试1000问(含答案)

1、自动化代码中,用到了哪些设计模式? 单例设计模式工厂模式PO设计模式数据驱动模式面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果&#xff0c;如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动化…

AI工具集盘点!2024年必备的AI软件都在这,一文全部拿下!

AI工具哪款好&#xff0c;有哪些值得推荐&#xff1f; 不可否认&#xff0c;当下各式各样的AI工具层出不穷&#xff0c;面对不断涌现的AI工具&#xff0c;各位在选用时是否无从下手&#xff0c;或是抽不出时间&#xff0c;逐一体验对比不同AI工具的差异…… 这也是现如今许多…

基于单片机的防酒驾控制系统设计

摘 要&#xff1a; 酒后驾车的危害十分巨大&#xff0c;因此&#xff0c;笔者介绍了一种基于单片机的防酒驾控制系统。系统由酒精传感器 MQ-3测量汽车驾驶员体内的酒精含量浓度&#xff0c;通过 A/D 转换器转换成数字信号传给单片机&#xff0c;经过单片机处理后显示酒精浓度&a…

OpenEuler 22.03 LTS SP3 CVE-2024-6387 OpenSSH 漏洞修复指南

一、漏洞概括 漏洞名称OpenSSH Server远程代码执行漏洞漏洞编号CVE-2024-6387公开时间2024-7-1CVSS 3.1分数8.1威胁类型代码执行漏洞等级暂无技术细节状态已公开在野利用状态不明确PoC状态x86已公开EXP状态未公开 OpenSSH是SSH&#xff08;Secure Shell&#xff09;协议的开源…

通过shell脚本创建MySQl数据库

通过shell脚本创建数据库 #!/bin/bashserverIP10.1.1.196 SERVER_NAMEecho $serverIP | cut -d . -f4cat<<EOF>db.sql drop database if exists ${SERVER_NAME}_scheduler; drop database if exists ${SERVER_NAME}_kms; drop database if exists ${SERVER_NAME}_uim…

用NanoID换掉 UUID,好处是?【送源码】

当我们在分布式环境中存储一些数据的时候&#xff0c;不得不面对的一个选择&#xff0c;就是ID生成器。 使用一个唯一的字符串&#xff0c;来标识一条完整的记录。 这时候&#xff0c;不能使用md5或者sha1来对整个记录做摘要&#xff0c;因为我们后续还要改动这个记录。也不能…

科技云报道:人工智能“顶流”齐聚WAIC 2024,他们都做了什么?

科技云报道原创。 一个由智能驱动的未来世界长啥样&#xff1f; 从完成跨海跨城航线的“空中的士”、全无人驾驶汽车、实现奔跑功能的全尺寸通用人形机器人到百度文心一言、讯飞星火、阿里通义千问、华为盘古、商汤日日新等大模型&#xff0c;从智能制造引领的“灯塔工厂”到…

芯科普| 矽光子是什麼?可以用在哪些领域?点击查看!

随着生成式人工智能的崛起&#xff0c;数据传输需求亦呈现爆发式增长。而在此背景下&#xff0c;台积电在半导体展览上披露的硅光子&#xff08;SiPh&#xff1a;Silicon Photonics&#xff09;技术进展&#xff0c;更是将硅光子推向了风口浪尖&#xff0c;成为了市场的宠儿。 …

一拖二快充线:生活充电新风尚,高效便捷解决双设备充电难题

一拖二快充线在生活应用领域的优势与双接充电的便携性问题 在现代快节奏的生活中&#xff0c;电子设备已成为我们不可或缺的日常伴侣。无论是智能手机、平板电脑还是笔记本电脑&#xff0c;它们在我们的工作、学习和娱乐中扮演着至关重要的角色。然而&#xff0c;随着设备数量…

【ue5】虚幻5同时开多个项目

正常开ue5项目我是直接在桌面点击快捷方式进入 只会打开一个项目 如果再想打开一个项目需要进入epic 再点击启动就可以再开一个项目了

如何网页在线编辑微软Office Word,并导出为PDF格式。

随着互联网技术的不断发展&#xff0c;越来越多的企业开始采用在线办公模式&#xff0c;微软Office Word 是最好用的文档编辑工具&#xff0c;然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的&#xff0c;如果可以实现Web在线预览编辑Of…

GPT-4o将改变论文学术文风,科学家揭示5年内百万篇论文“is”“are”词频减少10%!

在最近的一项研究中&#xff0c;意大利国际高等研究院&#xff08;SISSA&#xff09;的博士生耿明萌量化了 ChatGPT 对学术论文写作的影响。 与以往主要分析 ChatGPT 生成的段落或文章不同&#xff0c;这次研究更关注整体情况。 论文地址&#xff1a;https://arxiv.org/pdf/2…

YOLOv8改进 添加轻量级注意力机制ELAttention

一、ELA论文 论文地址:2403.01123 (arxiv.org) 二、Efficient Local Attention结构 ELA (Efficient Local Attention) 被用于处理自然语言处理任务中的序列数据。它旨在提高传统注意力机制的效率,并减少其计算和存储成本。 在传统的注意力机制中,计算每个输入位置与所有其…

NFT Insider #137:Polygon链上NFT销售额破7800万美元,TheSandbox通过创作者挑战推动社区参与

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members &#xff08;https://twitter.com/WHALEMembers&#xff09;、BeepCrypto &#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜…

平安养老险宿州中心支公司积极参与“78奋力前行”集体健步行活动

7月3日&#xff0c;平安养老保险股份有限公司&#xff08;以下简称“平安养老险”&#xff09;宿州中心支公司组织员工参加由宿州市保险行业协会2024年“78奋力前行”线下集体健步行活动。 平安养老险宿州中心支公司员工高举公司旗帜&#xff0c;与同业伙伴一起出发&#xff0…

探索Figma:下载流程及使用前准备

Figma 是基于浏览器的 UI 设计合作工具。无需下载&#xff0c;打开浏览器使用。虽然更建议直接在浏览器中使用 Figma&#xff0c;但是如果确实需要下载 Figma 客户端&#xff0c;可以直接在 Figma 官网的 Products > Downloads 页面下载。如果你不能访问 Figma 官网&#xf…

软件测试面试题总结(超全的)

前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些面试题…

申请便宜SSL证书 Let‘s Encrypt泛域名SSL证书

在当今数字化时代&#xff0c;网络安全已成为公众和企业关注的焦点。 申请Lets Encrypt便宜泛域名SSL证书步骤 1. 登录来此加密网站&#xff0c;输入域名&#xff0c;可以勾选泛域名和包含根域。 2. 选择加密方式&#xff0c;一般选择默认就可以了&#xff0c;也可以自定义CS…

【代码随想录——图论——岛屿问题】

1.岛屿数量 https://kamacoder.com/problempage.php?pid1171 1.1 深度优先搜索 package mainimport "fmt"var direction [][]int{{0, 1}, {0, -1}, {1, 0}, {-1, 0}}func main() {var M, N intfmt.Scanln(&N, &M)sea : make([][]int, N)visited : make…

VUE3使用antd引入百度地图 实现位置查询,获取地址经纬度

实现效果&#xff1a; 1.index.html 中先引入下 <script type"text/javascript" src"http://api.map.baidu.com/api?v2.0&ak自己申请的key"></script> 申请密钥key地址&#xff1a;登录百度账号 注册登录后创建应用&#xff0c;根据自己…