Mybatis框架详解+示例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 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(心源易码 派大星)


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
50 1
持久层框架MyBatisPlus
|
3月前
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
90 0
|
5月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
5月前
|
Java 数据库连接 mybatis
mybatis框架图
文章介绍了MyBatis框架的起源、发展和其作为持久层框架的功能,提供了MyBatis的框架图以帮助理解其结构和组件。
mybatis框架图
|
5月前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
5月前
|
Java 数据库连接 测试技术
后端框架的学习----mybatis框架(8、lombok)
这篇文章介绍了如何在MyBatis框架中使用lombok库来简化Java实体类的编写,包括在IDEA中安装Lombok插件、在项目中导入lombok依赖以及在实体类上使用Lombok提供的注解。
|
5月前
|
SQL Java 数据库连接
【Java 第十三篇章】MyBatis 框架介绍
MyBatis 原名 iBATIS,2001 年由 Clinton Begin 创建,以其简易灵活著称。2010 年更名以重塑品牌形象。MyBatis 通过 SQL 映射文件将 SQL 语句与 Java 代码分离,支持编写原生 SQL 并与方法映射。具备对象关系映射功能,简化数据库记录处理。支持动态 SQL 构建,灵活应对不同查询条件。内置缓存机制,提升查询效率。相比全功能 ORM,MyBatis 提供更高 SQL 控制度和更好的维护性,并易于与 Spring 等框架集成,广泛应用于 Java 数据访问层。
47 0
|
5月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
408 0
|
5月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(5、分页)
这篇文章介绍了如何在MyBatis框架中实现分页功能,包括使用SQL的`limit`语句进行分页和利用MyBatis的`RowBounds`对象进行分页的方法。
|
5月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。