MyBatis框架——快速入门

MyBatis 是一款优秀的持久层框架,用于简化JDBC开发

MyBatis 本是Apache 的一个开源项目iBatis,2010年这个项目由apache softwarefoundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github

官网: https://mybatis.org/mybatis-3/zh/index.html

持久层
负责将数据到保存的那一层代码

数据库JavaEE三层架构:表现层、业务层、持久层

框架
框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型

在框架的基础之上构建软件编写更加高效、规范、通用、可扩展

MyBatis 免除了几乎所有的JDBC 代码以及设置参数和获取结果集的工作。

查询user表中所有数据

1.创建user表,添加数据

create database mybatis;
use mybatis;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30)
);INSERT INTO tb_user VALUES(1,'zhangsan','123','男','北京');
INSERT INTO tb_user VALUES(2,'李四','234','女','天津');
INSERT INTO tb_user VALUES(3,'王五','11','男','西安');

查看数据表


2.创建模块,导入坐标

 <dependencies><!--mybatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!--mysql 驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--junit 单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--添加slf4j日志api--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency><!--添加logback-classic依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.6</version></dependency><!--添加logback-core依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency></dependencies>

还需导入一个配置文件: logback.xml

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示当前的日志信息是可以输出到控制台的。--><appender name="Console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern></encoder></appender><logger name="com.itheima" level="DEBUG" additivity="false"><appender-ref ref="Console"/></logger><!--level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 默认debug<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。--><root level="DEBUG"><appender-ref ref="Console"/></root>
</configuration>


3.编写MyBatis 核心配置文件 -- >替换连接信息解决硬编码问题

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--数据库连接信息--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><!--加载sql映射文件--><mapper resource="UserMapper.xml"/></mappers>
</configuration>

4.编写SQL 映射文件-->统一管理sql语句,解决硬编码问题

代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名称空间-->
<mapper namespace="test"><select id="selectAll" resultType="com.example.mybatisdemo.pojo.User">select * from tb_user;</select>
</mapper>


编码

1.定义POJO类

2.加载核心配置文件,获取 SqlSessionFactory 对象

String resource = "mybatis-config.xml"; //核心配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3.获取 SqlSession 对象,执行 SQL语句

 List<User> users = sqlSession.selectList("test.selectAll");

4.释放资源

sqlSession.close();

运行结果:

整体代码

package com.example.mybatisdemo;import com.example.mybatisdemo.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** @author hyk~*///Mybatis快速入门代码
public class MyBatisDemo {public static void main(String[] args) throws IOException {//1.加载mybatis的核心配置文件,获取SqlSessionFactoryString resource = "mybatis-config.xml"; //核心配置文件InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,执行SQL语句SqlSession sqlSession = sqlSessionFactory.openSession();//3.执行 sqlList<User> users = sqlSession.selectList("test.selectAll");//打印System.out.println(users);//释放资源sqlSession.close();}
}

 

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

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

相关文章

记录搭建linux虚拟机学习jenkins自动化部署的全过程

安装虚拟机教程参考 https://juejin.cn/post/7250009145915719740?searchId2024060409134616191B1350EC8E073921 持续集成环境(1)-Jenkins安装 1&#xff09; 安装JDK Jenkins需要依赖JDK&#xff0c;所以先安装JDK1.8 yum install java-1.8.0-openjdk* -y 安装目录为&#…

HTTP相关面试题

1. HTPP基本概念 HTTP是超文本传输协议。本质上就是一个可以传输图片、视频、文字的计算机与计算机之间的协议 1.1. HTTP常见的状态码 2XX状态码: 主要用于表示已经服务器已经成功的处理了请求 [200 ok ]: 是最常见的状态码,表示我们请求成功且响应内容(响应头body)已经收到…

c# 开发的wpf程序闪退,无法用try catch捕获异常

之前开发的一个程序是c#wpf开发&#xff0c;基于.net framework 4.6.1的&#xff0c;一切都是正常的&#xff0c;但是在我重新装了win11后在程序logo出现后直接闪退&#xff0c;报错 返回值为 -1073740791 (0xc0000409)&#xff0c;而且定位到代码时发现是&#xff0c; publi…

【遂愿赠书 - 2期】:618火热来袭,网络安全书单推荐

文章目录 一、网络安全书单背景二、网络安全与编程实践书单2.1 &#x1f3f0;《内网渗透实战攻略》2.2 &#x1f6e1;️《Kali Linux高级渗透测试&#xff08;原书第4版&#xff09;》2.3 &#x1f396;️《CTF那些事儿》2.4 &#x1f680;《权限提升技术&#xff1a;攻防实战与…

惠海H6212L 48V转12V 36V转12V 24V转5V DCDC降压恒压模块供电芯片方案

内置60V高压MOS&#xff1a;H6212L内置了60V耐压的MOS&#xff0c;这使得它能够承受48V的输入电压&#xff0c;从而适应更多的电源环境。 宽电压输入范围&#xff1a;支持8V至48V的宽压输入范围&#xff0c;满足了不同应用场景的电源需求。 输出电压可调&#xff1a;支持输出…

旺店通·企业奇门对接打通金蝶云星空查询盘点盈亏统计接口与其他入库新增接口

旺店通企业奇门对接打通金蝶云星空查询盘点盈亏统计接口与其他入库新增接口 对接系统旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模…

重庆耶非凡科技人力rpo蓝海项目能不能做?

随着市场经济的不断发展和企业对人才需求的日益增长&#xff0c;人力资源外包(HRO)已成为众多企业优化资源配置、提升管理效率的重要手段。其中&#xff0c;招聘流程外包(RPO)作为HRO的重要组成部分&#xff0c;更是凭借其专业性和高效性受到了广泛关注。在此背景下&#xff0c…

linux业务代码性能优化点

planning优化的一些改动----------> 减少值传递&#xff0c;多用引用来传递 <---------- // ----------> 减少值传递&#xff0c;多用引用来传递 <---------- // 例1&#xff1a; class A{}; std::vector<A> v; // for(auto elem : v) {} // 不建议&#xff…

HiWoo Cloud物联网云平台

在科技日新月异的今天&#xff0c;物联网&#xff08;IoT&#xff09;已经成为推动社会进步的重要力量。而物联网云平台&#xff0c;作为连接万物、实现智能交互的核心&#xff0c;更是备受瞩目。今天&#xff0c;就让我们一起走进HiWoo Cloud的世界&#xff0c;探寻这款物联网…

学习axios拦截器

axios拦截器的作用&#xff1a;用于在请求发送前和响应返回后对请求和响应进行统一处理&#xff0c;例如添加公共请求头、处理请求参数、统一处理错误信息等。拦截器提供了一种灵活、高效的方式来管理HTTP请求和响应&#xff0c;帮助在前端开发中更好地处理数据交互。 这是一个…

揭秘业务系统数据安全三大核心问题:“谁在用”、“用什么”和“怎么用”

数据库宛如一座坚固的宝库&#xff0c;守护着无尽的智慧与财富—数据&#xff0c;如同熠熠生辉的金币。当宝库的门紧闭时&#xff0c;金币得以安然无恙。 然而&#xff0c;在业务系统的广阔天地中&#xff0c;这些数据金币被精心挑选、流通使用&#xff0c;每一枚都承载着无尽…

Master-Worker 架构的灰度发布难题

作者&#xff1a;石超 一、前言 Master-Worker 架构是成熟的分布式系统设计模式&#xff0c;具有集中控制、资源利用率高、容错简单等优点。我们数据中心内的几乎所有分布式系统都采用了这样的架构。 &#xfeff; 我们曾经发生过级联故障&#xff0c;造成了整个集群范围的服…

个人课设---玩家血条(包括攻击掉血,复活重生功能)

血条UI操作 渲染模式改为世界空间 导入面板组件并通过画布调整大小 在面板上导入文本组件&#xff0c;显示玩家名称&#xff08;旧版&#xff09; 为了使血条填满&#xff0c;Fill Area 数值全部置为0 改变背景颜色和填充物颜色&#xff0c;并设置血条方向 改变数值方便计算 …

7 - 产品销售分析 I(高频 SQL 50 题基础版)

7- 产品销售分析 I select product_name,year,price from Sales left join Product on Sales.product_id Product.product_id;

窗口重叠之鼠标事件透传

目的 Qt webview在下层展示url&#xff0c;上层覆盖最小化等按钮&#xff0c;支持大小拖拽&#xff0c;窗口移动。 如下图&#xff0c;除红框部分&#xff0c;其余异形部分作为url展示区 构想 想要实现该效果&#xff0c;需要在webview窗口上方动态创建两个窗口&#xff0c;…

四川古力未来科技抖音小店创新经营,引领电商新潮流

在数字化浪潮的推动下&#xff0c;电商行业蓬勃发展&#xff0c;抖音小店作为新兴的电商平台&#xff0c;正以其独特的魅力和优势吸引着越来越多的消费者。四川古力未来科技&#xff0c;作为抖音小店的经营者之一&#xff0c;凭借其可靠的经营模式和创新的经营理念&#xff0c;…

医用腕带朔源用的条形码与二维码如何选择

在医疗环境中的医用腕带作为患者身份识别和管理的重要工具&#xff0c;做为条形码和二维码腕带上的溯源技术&#xff0c;更是为患者信息快速获取、准确传递的保障&#xff0c;实现更加高效和准确的患者身份识别和管理&#xff0c;这种技术可以大大提高医疗服务的效率和质量&…

React路由(React笔记之五)

本文是结合实践中和学习技术文章总结出来的笔记(个人使用),如有雷同纯属正常((✿◠‿◠)) 喜欢的话点个赞,谢谢! React路由介绍 现在前端的项目一般都是SPA单页面应用,不再是以前多个页面多套HTML代码项目了,应用内的跳转不需要刷新页面就能完成页面跳转靠的就是路由系统 R…

小米路由器如何设置去广告功能,如何设置小米路由器的自定义Hosts(小米路由器如何去除小米广告、去除小米电视盒子开屏广告、视频广告)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 实现方案 📒📝 操作步骤📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 小米设备的广告一直是用户头疼的问题,无论是开屏广告、应用内广告还是系统广告,都影响了用户体验。本文将详细介绍如何通过小米路由器实现去除广告…

阿里云 查询封禁原因并申请解封 违规网站屏蔽访问违规URL整改通知 抱歉!该站点已经被管理员停止运行,请联系管理员了解详情!

原因网站被挂马或入侵 特别是织梦项目&#xff0c;已经100%难以使用。必然会被入侵。 要完全消除漏洞或防止被挂马&#xff0c;目前要么买安全服务&#xff0c;还没有别的好办法。 备份 恢复 项目做完后&#xff0c;先备份一个。被挂马能直接恢复。 每次修改后把权限全改为…