Mybatis框架详解+示例

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
简介: Mybatis框架详解+示例

@[TOC]

一、Mybatis简介

1.Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。

2.Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。

3.Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJO映射成数据库中的记录。

4.特点:小巧简单易学,没有任何第三方依赖。MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加

任何影响。SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,更易单元测试,并可重用。

5.不足:SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求,SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

二、Mybatis体系结构

在这里插入图片描述

三、Mybatis编程方法1:基于XML的实现

在这里插入图片描述

步骤1、创建好MySQL数据库

create database testdb; 
use testdb; 
create table users(
id int auto_increment not null,
username varchar(20) not null,
password varchar(20),
primary key(id)
);

步骤2、在pom.xml中添加mysql-connector-java和Mybatis依赖

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency> 
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>

步骤3、创建实体类User(pojo)

在src/main/java下新建entity包,并创建User类:

package entity;
public class User {
int id;
String username;
String password; 
//getter和setter省略
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}

步骤4、添加Mybatis全局配置文件

在src/main/resources下新建mybatis包,并新建mybatis-config.xml:

<?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>
<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://localhost:3306/testdb?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="zz@mysql" />
</dataSource>
</environment>
</environments> 
<mappers> 
<mapper resource="mapper/userMapper.xml"/>
</mappers> 
</configuration>

步骤5、创建sql映射文件userMapper.xml

在src/main/resources下新建mapper包,创建userMapper.xml :

<?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="mapper.userMapper"> 
<select id="getUserById" resultType="entity.User" parameterType="int">
select * from users where id= #{id}
</select>
</mapper>

步骤6、主程序测试

public class Test {
        public static void main(String[] args) throws IOException {
            String resource = "mybatis/mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            String statement = "mapper.userMapper.getUserById"; // namespace+id找到映射sql串
            User user = sqlSession.selectOne(statement, 1);
            sqlSession.close();
            System.out.println(user);
        }
    }

三、Mybatis编程方法2:基于注解的实现

步骤1、定义sql映射接口(在src/main/java下创建mapper包)

package mapper;
public interface IUserMapper {
@Insert("insert into users(username,password) values(#{username},#{password})")
public int addUser(User user);
@Delete("delete from users where id=#{id}")
public int deleteUser(int id);
@Update("update users set username=#{username},password=#{password} where id=#{id}")
public int updateUser(User user);
@Select("select * from users where id=#{id}")
public User getUserById(int id);
@Select("select * from users")
public List<User> getAllUsers();
}

步骤2、将sql映射接口添加到Mybatis配置文件

<mappers>
<mapper class="mapper.IUserMapper"/>
</mappers>

步骤3、CRUD代码

static SqlSession sqlSession; // 定义类成员变量
    static IUserMapper mapper; // 定义类成员变量
    public static SqlSession getSqlSession() throws IOException {
        String resource = "mybatis/mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return sqlSessionFactory.openSession();
    }
    public static List<User> getAllUsers() throws IOException {
        sqlSession = getSqlSession();
        mapper = sqlSession.getMapper(IUserMapper.class);
        List<User> list = mapper.getAllUsers();
        sqlSession.close();
        return list;
    }
    public static void main(String[] args) throws IOException {
        List<User> users = getAllUsers();
        for (User user : users) {
            System.out.println(user);
        }
    }

五、资源下载与学习

CSDN下载:Mybatis编程示例:基于XML的实现

CSDN下载:Mybatis编程示例:基于注解的实现

联系作者

如需要本资源下载也可以直接添加作者QQ,并可以获取资源预览、软件安装、工程导入、协助运行、算法解释、报告协助撰写等售后服务

欢迎交流

QQ:402501817(心源易码 佩奇)

QQ:2215991436(心源易码 派大星)


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
SQL XML Java
301 0
|
8月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
652 12
|
9月前
|
SQL XML Java
MyBatis框架如何处理字符串相等的判断条件。
总的来说,MyBatis框架提供了灵活而强大的机制来处理SQL语句中的字符串相等判断条件。无论是简单的等值判断,还是复杂的条件逻辑,MyBatis都能通过其标签和属性来实现,使得动态SQL的编写既安全又高效。
690 0
|
Oracle 关系型数据库 Java
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
870 29
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
478 1
持久层框架MyBatisPlus
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
710 0
|
SQL Java 数据库连接
【Java 第十三篇章】MyBatis 框架介绍
MyBatis 原名 iBATIS,2001 年由 Clinton Begin 创建,以其简易灵活著称。2010 年更名以重塑品牌形象。MyBatis 通过 SQL 映射文件将 SQL 语句与 Java 代码分离,支持编写原生 SQL 并与方法映射。具备对象关系映射功能,简化数据库记录处理。支持动态 SQL 构建,灵活应对不同查询条件。内置缓存机制,提升查询效率。相比全功能 ORM,MyBatis 提供更高 SQL 控制度和更好的维护性,并易于与 Spring 等框架集成,广泛应用于 Java 数据访问层。
379 0
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】