Java Mybatis 框架入门教程("Java Mybatis 框架入门教程:从零基础到实战掌握")

原创
ithorizon 7个月前 (10-19) 阅读数 20 #后端开发

Java Mybatis 框架入门教程:从零基础到实战掌握

一、Mybatis 简介

Mybatis 是一款优秀的持久层框架,它赞成自定义 SQL、存储过程以及高级映射。Mybatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取导致集。Mybatis 可以使用简洁的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、Mybatis 迅速入门

下面我们将从零起始,逐步搭建一个基于 Mybatis 的 Java 项目。

2.1 环境准备

首先,确保你的开发环境已经安装了以下软件:

  • JDK 1.8 或更高版本
  • Maven 3.5.4 或更高版本
  • MySQL 5.7 或更高版本

2.2 创建 Maven 项目

使用你爱好的 IDE(如 IntelliJ IDEA 或 Eclipse)创建一个 Maven 项目,并添加以下依靠到 pom.xml 文件中:

<dependencies>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.5.7</version>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.22</version>

</dependency>

</dependencies>

2.3 配置 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/mybatis?useSSL=false&serverTimezone=UTC"/>

<property name="username" value="root"/>

<property name="password" value="123456"/>

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="com/example/mapper/UserMapper.xml"/>

</mappers>

</configuration>

2.4 创建实体类和映射文件

创建一个名为 User.java 的实体类,用于即用户信息:

package com.example.entity;

public class User {

private Integer id;

private String name;

private Integer age;

// 省略构造方法、getter 和 setter 方法

}

创建一个名为 UserMapper.java 的接口,用于定义操作用户信息的 SQL 语句:

package com.example.mapper;

import com.example.entity.User;

import org.apache.ibatis.annotations.Param;

import org.apache.ibatis.annotations.Select;

public interface UserMapper {

@Select("SELECT * FROM user WHERE id = #{id}")

User getUserById(@Param("id") Integer id);

}

创建一个名为 UserMapper.xml 的映射文件,用于实现 UserMapper.java 接口中的 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="com.example.mapper.UserMapper">

<select id="getUserById" resultType="com.example.entity.User">

SELECT * FROM user WHERE id = #{id}

</select>

</mapper>

2.5 编写测试类

编写一个名为 MybatisTest.java 的测试类,用于测试 Mybatis 是否正常工作:

package com.example;

import com.example.entity.User;

import com.example.mapper.UserMapper;

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;

public class MybatisTest {

public static void main(String[] args) {

try (InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml")) {

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

try (SqlSession sqlSession = sqlSessionFactory.openSession()) {

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

User user = userMapper.getUserById(1);

System.out.println(user);

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

运行 MybatisTest.java 测试类,如果输出导致为 User(id=1, name=张三, age=18),则即 Mybatis 已经顺利连接到数据库。

三、Mybatis 进阶

本节将介绍 Mybatis 的一些高级特性,如动态 SQL、插件开发、逆向工程等。

3.1 动态 SQL

Mybatis 提供了强势的动态 SQL 功能,可以选用不同的条件动态生成 SQL 语句。以下是一个简洁的示例:

<select id="findActiveBlogWithTitleLike" resultType="Blog">

SELECT * FROM BLOG

WHERE state = ‘ACTIVE’

<if test="title != null">

AND title like #{title}

</if>

</select>

3.2 插件开发

Mybatis 允许开发者在映射语句执行过程中的某个点进行拦截,从而开发自定义插件。以下是一个简洁的插件开发示例:

@Intercepts({

@Signature(

type = Executor.class,

method = "update",

args = {MappedStatement.class, Object.class, Object.class, Integer.class}

)

})

public class MyPlugin implements Interceptor {

@Override

public Object intercept(Invocation invocation) throws Throwable {

MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];

// 执行拦截逻辑

return invocation.proceed();

}

}

3.3 逆向工程

Mybatis 提供了逆向工程功能,可以选用数据库表结构自动生成映射文件、接口和实体类。以下是一个简洁的逆向工程配置示例:

<configuration>

<plugins>

<plugin interceptor="org.mybatis.generator.api.MyBatisGenerator"/>

</plugins>

<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/mybatis?useSSL=false&serverTimezone=UTC"/>

<property name="username" value="root"/>

<property name="password" value="123456"/>

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="com/example/mapper/UserMapper.xml"/>

</mappers>

</configuration>

四、总结

本文从零基础起始,介绍了 Mybatis 框架的入门知识。通过阅读本文,你可以了解到 Mybatis 的基本概念、迅速入门方法和一些高级特性。在实际开发中,Mybatis 可以帮助你简化数据库操作,节约开发效能。期待本文能对你有所帮助。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门