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

Mybatis入门简介HelloMybatis

Mybatis-9.28

环境:

  • JDK1.8
  • Mysql5.7
  • Maven 3.6.1
  • IDEA

回顾:

  • JDBC
  • Mysql
  • Java 基础 (封装继承的思想,看到一个东西能不能把它封装成一个工具类)
  • Maven (会加个Maven、知道父子模块)
  • Junit (单元测试)

SSM框架:配置文件的。最好学习的方式:官网文档

SSM 通常指代 Spring、SpringMVC 和 MyBatis 这三个 Java 框架的组合。

现在学的M是MyBatis

什么是 MyBatis?

  • MyBatis 是一款优秀的持久层框架
  • 它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  • MyBatis(原名为iBatis,名称来源于"internet"和"abatis"的组合)是一款基于Java的持久层框架,最初由Apache软件基金会开发,2010年迁移至Google Code并更名MyBatis
  • 2013年转至GitHub平台。

持久化

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转换的过程
  • 内存:断电即失。主要是把内存里面的数据持久化到我们的对象里面
  • 数据库(JDBC),IO文件持久化。
  • 生活:冷藏

为什么需要持久化?

  • 有一些对象,不能让他丢掉。
  • 内存太贵了

持久层

Dao层、Service层,Controller层……

  • 完成持久化工作的代码块
  • 层界限十分明显

为什么需要Mybatis?

  • 帮助程序员将数据存入到数据库中
  • 方便
  • 传统的JDB代码太复杂了。简化。框架。自动化
  • 不用Mybatis也可以。但是Mybatis更容易上手。技术没有高低之分
  • 优点:
    • 简单易学
    • 灵活
    • sql和代码的分离,提高了可维护性。
    • 提供映射标签,支持对象与数据库的ORM字段关系映射。
    • 提供对象关系映射标签,支持对象关系组建维护。
    • 提供xml标签,支持编写动态sql。

最重要的一点:使用的人多!

Spring SpringMVC SpringBoot

随大众、迎合

如何获得Mybatis?

  • Maven仓库:https://mvnrepository.com/search?q=Mybatis
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency>
  • Github:https://github.com/mybatis/mybatis-3
  • 中文文档:https://mybatis.org/mybatis-3/zh_CN/index.html

可以看见是一个Maevn项目

学习思路:

  • 搭建环境–>导入Mybatis–>编写代码–>测试

搭建环境

搭建数据库

CREATEDATABASE`mybatis`;USE`mybatis`;CREATETABLE`user`(`id`INT(20)NOTNULLPRIMARYKEY,`name`VARCHAR(30)DEFAULTNULL,`pwd`VARCHAR(30)DEFAULTNULL)ENGINE=INNODBDEFAULTCHARSET=utf8;INSERTINTO`user`(`id`,`name`,`pwd`)VALUES(1,'admin','123456'),(2,'test','123456'),(3,'root','123456');

新建项目

  1. 新建一个普通的Maven项目
  2. 删除父工程的src目录
  3. 导入Maven依赖
<dependencies><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--mybatis--><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><!--junit单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
  1. 编写代码

创建一个模块

编写mybatis的核心配置文件

- 在子项目中的src目录下的resources资源目录新建配置文件
<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE configuration PUBLIC"-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration核心配置文件--><configuration><!--环境设置,因为有s代表复数,可以配置多个环境environments--><environmentsdefault="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver"value="com.mysql.jdbc.Driver"/><!--&amp;相当于原来的&符号进行了转义,因为XML中需要一些转义--><property name="url"value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username"value="自己的用户名"/><property name="password"value="自己的密码"/></dataSource></environment></environments></configuration>

编写mybatis的工具类

importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.IOException;importjava.io.InputStream;publicclassMybatisUtils{// 提升作用域privatestaticSqlSessionFactorysqlSessionFactory;//SqlSessionFactory --> sqlSessionstatic{try{// 使用MyBatis第一步:获取sqlSessionFactory对象Stringresource="mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream(resource);SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);}catch(IOExceptione){thrownewRuntimeException(e);}}// 既然有了 SqlSessionFactory,顾名思义,我们可以从中获取 SqlSession 的实例。// SQllSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。publicstaticSqlSessiongetSqlSession(){returnsqlSessionFactory.openSession();}}

编写代码

实体类

publicclassuser{privateintid;privateStringname;privateStringpwd;publicuser(){}publicuser(intid,Stringname,Stringpwd){this.id=id;this.name=name;this.pwd=pwd;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPwd(){returnpwd;}publicvoidsetPwd(Stringpwd){this.pwd=pwd;}@OverridepublicStringtoString(){return"user{"+"id="+id+", name='"+name+'\''+", pwd='"+pwd+'\''+'}';}}

Dao接口

importcom.cike.pojo.user;importjava.util.List;publicinterfaceUserDao{List<user>getUserList();}

编写绑定接口的Mapper配置文件

  • 由原来的UserDaoImpl转变为一个Mapper配置文件

resultMap返回多个、resultType返回一个

<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespcae=绑定一个对应的Dao/Mapper接口--><mapper namespace="com.cike.dao.UserDao"><!--<select id="对应UserDao的方法"resultType="实体类">--><select id="getUserList"resultType="com.cike.pojo.user"><!--执行SQL-->select*from mybatis.user</select></mapper>

测试

MapperRegistry

注意:Mapping.XML要在mybatis-config.xml核心配置文件中注册

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration核心配置文件--><configuration><!--环境设置,因为有s代表复数,可以配置多个环境environments--><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"><propertyname="driver"value="com.mysql.jdbc.Driver"/><!--&amp;相当于原来的&符号进行了转义,因为XML中需要一些转义--><propertyname="url"value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><propertyname="username"value="root"/><propertyname="password"value="123456"/></dataSource></environment></environments><!--没有给Mapping.XML都需要在Mybatis核心配置文件中注册--><mappers><mapperresource="com/cike/dao/UserMapper.xml"/></mappers></configuration>

junti测试

importcom.cike.pojo.user;importcom.cike.util.MybatisUtils;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;importjava.util.List;publicclassUserDaoTest{@Testpublicvoidtest(){//第一步:获得SqlSession对象SqlSessionsqlSession=MybatisUtils.getSqlSession();//执行SQLUserDaouserDao=sqlSession.getMapper(UserDao.class);// 获得对象List<user>userList=userDao.getUserList();for(user user:userList){System.out.println(user);}// 关闭SqlSessionsqlSession.close();}}

测试的代码,也要规范路径

问题解决-无法导出(百分之10000遇到问题)

运行项目的时候发现XML没有成功导出

Maven配置

<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><!-- 如果配置文件在java目录下,需要添加此配置 --><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>

可能会遇到的问题:

  • 配置文件没有注册
  • 绑定接口错误
  • 方法名不对
  • 返回类型不对
  • Maven导出资源问题

参考:

按着这个官方文档进行复制一些代码

https://mybatis.org/mybatis-3/zh_CN/getting-started.html
http://www.cnnetsun.cn/news/174862.html

相关文章:

  • 硬件自查自纠!十年前的电脑可能还可以再战十年
  • 一键配置 Web 前端开发环境(PowerShell 自动化脚本)
  • 程序员必备技能:AI Agent 9种设计模式深度解析,提升大模型应用效能(值得收藏)
  • 【python大数据毕设实战】哮喘患者症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习
  • 9 个降AI率工具,MBA 必备避坑指南
  • Windows系统文件inetmib1.dll丢失损坏 下载修复方法
  • Boost电路的右半平面零点
  • 【全球AI伦理治理】
  • 毕业季必看!7款免费AI写论文神器实测,一站式搞定选题、大纲到降重
  • LLMs之Survey之Agent:《Measuring Agents in Production》翻译与解读
  • 零代码上手Google Gemini 3:5种实用方法大揭秘
  • “你用的那个AI,到底把你坑了还是救了?”——解锁宏智树论文的协作新范式
  • 好写作AI:别等学校采购了!你的论文“救命神器”自己就能用上
  • Windows系统文件GdiPlus.dll丢失或损坏 下载修复方法
  • 研究生必备8款AI写论文神器:5分钟生成25000字问卷类论文,自动生成高信度数据
  • 【BuildFlow 筑流】unitrix_macros库 Cargo.toml 配置详解及依赖库用法
  • 《开发者出海必看:如何优雅地搞定海外服务支付?(保姆级干货)》
  • Thinkphp和Laravel企业防爆安全设备信息系统
  • Thinkphp和Laravel全家桶鲜花售卖商城系统vue
  • 记录我适配iOS26遇到的一些问题
  • 通过命令模拟pod创建
  • 同步机无感 STM32 低成本 MD500E 永磁同步控制方案大揭秘
  • 小宝玩具 【通达信、源码 、主图、附图】
  • 使用 Github Pages 和 Hexo
  • 审稿 一区期刊注意事项: journal offers the option to connec;please note, reviewers are not expected 是什么意思
  • 线性代数:多维世界的变形工具箱
  • 力扣题目142. 环形链表 II​的解法分享,附图解
  • MATLAB电力系统继电保护之自动重合闸
  • 10 个AI写作工具,助你轻松搞定继续教育论文!
  • 【开题答辩全过程】以 基于Vue的茶道知识科普网站的设计与实现为例,包含答辩的问题和答案