当前位置: 首页 > news >正文

MyBatis框架搭建与代码解读

前言:

MyBatis是一个灵活的持久层框架,适合与数据库交互,支持自定义SQL和高级映射。搭建MyBatis的基本步骤包括:

  1. 环境准备:安装JDK、Maven和IDE。
  2. 创建项目:建立Maven项目并设置基本信息。
  3. 添加依赖:在pom.xml中引入MyBatis和数据库驱动的依赖。
  4. 配置MyBatis:创建mybatis-config.xml文件,配置数据库连接和Mapper。
  5. 实现Mapper和模型:编写Mapper接口及其XML文件和对应的模型类。
  6. 主程序测试:通过主类测试数据库连接和查询。

完成这些步骤后,可以成功建立一个简单的MyBatis项目,实现与数据库的交互

背景介绍

    mybatis原来是apache下面的一个开源项目,名为ibatis

    2010年开发团队转投Google旗下,更名为MyBatis

MyBatis介绍

   MyBatis是一个优秀的数据持久层框(dao层  数据访问层 数据持久层),也就是在Dao层处理数据

   MyBatis是对jdbc进行封装,避免了jabc中手动设置参数,手动映射结果的操作

   MyBatis将jdbc中的接口进行封装,提供了他自己的类和接口实现

   MyBatis可以使用xml配置和注解的方式,将数据库中记录自动映射到Java对象中,是一种ORM实现(对象关系映射) 将可以自动将数据映射到对象中的这种框架,也成为orm框架

   MyBatis还提供了动态sql和数据缓存

MyBatis搭建

  1. 创建一个maven对象
  2. 导入MyBatis.jar包
  3. 创建一个全局的MyBatis配置文件
  4. 创建数据库
  5. 定义Dao接口,定义方法
  6. 创建sql映射文件,编写sql
  7. 测试MyBatis

MyBatis官方网址

https://mybatis.org/mybatis-3/zh_CN/index.htmlicon-default.png?t=N7T8http://官方网址

第一步:创建maven对象

第二步:导入jar包

注:因为mybati是是对mysql的封装,本质上还是与数据的连接操作,所以我们依旧需要导入mysql jar包         

第三步:创建MyBatis配置文件并配置文件 

配置文件:

<?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><!--   MyBatis配置文件--><settings><setting name="logImpl" value="STDOUT_LOGGING"/><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!-- 为类配置别名--><typeAliases><!--<typeAlias type="com.kid.mybatispro.model.Admin" alias="Admin"></typeAlias>--><package name="com.kid.mybatispro.model"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><!--type="POOLED" 使用数据库连接池功能--><dataSource type="POOLED"><!-- 数据库连接的配置--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 注册映射文件--><mappers><mapper resource="mappers/AdminMapper.xml"></mapper></mappers>
</configuration>

数据库连接池(POOED)

链接数据库,每次访问数据时候,创建一个Connection,用完关闭.但访问量大了后,每次都要创建新的连接对象,用完关闭,比较耗时

使用数据库连接池,在池(集合)中事先创建一些连接对象,用户访问时,就直接池中获取一个链接对象,用完不销毁,还回池中.这样就减少频繁创建销毁连接对象

 

第四步:创建数据库 

 create table admin(id int  primary key auto_increment,account varchar(20),password varchar(20),gender CHAR(1))

注:在数据库中填入几组值,方便后面使用 .

第五步:定义接口

package com.kid.mybatispro.dao;import com.kid.mybatispro.model.Admin;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface AdminDao {//单个参数传递Admin findAdminById(int id);Admin findAdminByAccount(int id);//多个参数的传递Admin login(@Param("acc") String account, @Param("pass") String password);Admin login1(Admin admin);// 添加数据void insertAdmin(Admin admin);void deleteAdmin(int id);void updateAdmin(Admin admin);int findAdminCount();String findAdminId(String account);List<Admin> findAdmins();
}

注:接口中定义我们所需的操作

第六步:创建sql映射文件,编写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">
<mapper namespace="接口的地址">
<select id="findAdminById" parameterType="int" resultType="com.ffyc.mybatis.model.Admin">
select * from admin where id = #{id} </select> </mapper>

代码解读:

 注:我们可以在配置文件中为类定义别名

我们就就可以简写为:

 

第七步:测试MyBatis

第一步:读取配置文件

读取配置文件

Reader reader = Resources.getResourceAsReader("mybatis-config.xml");

mybatis-config.xml---->为我们定义的配置文件名(创建的第一个.xml文件)

第二步:创建 SqlSessionFactory

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

read---->上面创建的对象

注:创建 SqlSessionFactory 负责创建SqlSession对象(连接数据库的会话对象,类似Connection) SqlSessionFactory对象只需要创建一次,不需要销毁

 第三步:创建SqlSession

SqlSession sqlSession = sessionFactory.openSession();

第四步:获得接口代理对象

sqlSession.getMapper(接口.class);

sqlSession .close();关闭 

代码:

    public static void main(String[] args) throws IOException {//MyBatis读取配置文件Reader reader = Resources.getResourceAsReader("mybatis.xml");//创建 SqlSessionFactory   负责创建SqlSession对象(连接数据库的会话对象,类似Connection)//SqlSessionFactory对象只需要创建一次,不需要销毁SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//创建SqlSession对象SqlSession sqlSession = sessionFactory.openSession();//创建接口的代理对象AdminDao adminDao = sqlSession.getMapper(AdminDao.class);Admin admin = adminDao.findAdminById(1); //让代理对象带我们巧用映射文件中与此接口中相同名称的方法System.out.println(admin);}




 感谢大家的观看,本次分享就到这里。希望我的内容能够对您有所帮助。创作不易,欢迎大家多多支持,您的每一个点赞都是我持续更新的最大动力!如有不同意见,欢迎在评论区积极讨论,让我们一起学习、共同进步!如果有相关问题,也可以私信我,我会认真查看每一条留言。期待下次再见!

                                       希望路飞的笑容可以治愈努力路途中的你我!

博主vx:Dreamkid05 --->欢迎大家和博主讨论问题 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 分形比特币(Fractal Bitcoin)
  • 基于Open Cv的数字图像手势识别系统,Python编程实现,可以识别以下6种手势,含代码和报告
  • Excel 中找出每列第一个和最后一个非空格对应的行--Excel难题#87
  • MySQL中处理JSON数据:大数据分析的新方向
  • Visiual Studio如何添加C语言的依赖和一些快捷键
  • 小黄鸟九宫格切图丨教你如何将图片九宫格切图_照片分割成9张工具
  • Earth‘s Future | 西南大学时伟宇团队揭示长江上游径流变化对气候变化与人类活动响应的驱动机制不同
  • DB-GPT开源项目论文解读
  • Vulkan 学习(5)---- Vulkan 内存分配
  • 树上启发式合并——dsu on tree
  • React学习笔记(三)——redux状态管理工具
  • mysql的安装与初始化
  • Python--正则表达式
  • Centos7整合fail2ban配置ssh和pgsql以及vault
  • 开发日记-EaxyExcel修改模板sheet名称
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【剑指offer】让抽象问题具体化
  • FastReport在线报表设计器工作原理
  • go append函数以及写入
  • JAVA多线程机制解析-volatilesynchronized
  • Java精华积累:初学者都应该搞懂的问题
  • Java知识点总结(JavaIO-打印流)
  • js算法-归并排序(merge_sort)
  • nginx 负载服务器优化
  • Odoo domain写法及运用
  • 编写符合Python风格的对象
  • 从setTimeout-setInterval看JS线程
  • 大快搜索数据爬虫技术实例安装教学篇
  • 高度不固定时垂直居中
  • 聊聊directory traversal attack
  • 每天一个设计模式之命令模式
  • 免费小说阅读小程序
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 深度学习在携程攻略社区的应用
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微服务入门【系列视频课程】
  • 运行时添加log4j2的appender
  • scrapy中间件源码分析及常用中间件大全
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​如何防止网络攻击?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #etcd#安装时出错
  • $().each和$.each的区别
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C语言)球球大作战
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)php投票系统 毕业设计 121500
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .net 4.0发布后不能正常显示图片问题