MyBatis 和 MyBatis-Plus 入门指南:新手必读

MyBatis 和 MyBatis-Plus 入门指南:新手必读

在 Java 开发中,持久层的设计和实现是非常重要的一环。MyBatis 和 MyBatis-Plus 是两个广泛使用的数据库访问框架,它们可以帮助我们更高效地与数据库进行交互。本篇博客将详细介绍这两个框架的基本使用方法,并附有代码注释,帮助新手更好地理解和实践。


一、什么是 MyBatis 和 MyBatis-Plus?

1.1 MyBatis

MyBatis 和 MyBatis-Plus 入门指南:新手必读_第1张图片

MyBatis 是一个数据持久层框架,提供了 SQL 映射的能力。它允许开发者直接编写 SQL 语句,并将结果映射到 Java 对象中。主要特点包括:

  • SQL 控制:开发者可以完全控制 SQL 的编写。
  • 灵活性:适合需要复杂 SQL 查询的场景。
  • 配置方式:支持 XML 配置和注解方式。

1.2 MyBatis-Plus

MyBatis 和 MyBatis-Plus 入门指南:新手必读_第2张图片

MyBatis-Plus 是 MyBatis 的增强版,旨在简化 MyBatis 的使用,提供了许多便捷的功能:

  • 自动代码生成:根据数据库表自动生成实体类、Mapper 接口等。
  • 通用 CRUD 操作:内置常用的 CRUD 方法,减少手动编写 SQL 的需要。
  • 条件构造器:简化复杂查询的编写。
  • 性能优化:提供分页插件、逻辑删除等功能。

二、如何使用 MyBatis

2.1 添加依赖

在 Maven 项目中,首先需要添加 MyBatis 的依赖。下面的代码块是 pom.xml 文件中的配置:


    
    org.mybatis
    mybatis
    3.5.12 
    
    org.mybatis
    mybatis-spring
    2.0.8 
    
    org.mybatis
    mybatis-spring-boot-starter
    2.0.8 

2.2 配置 MyBatis

创建 mybatis-config.xml 文件来配置 MyBatis。这个配置文件告诉 MyBatis 如何加载和管理映射文件:


    
    
        
    

2.3 定义 Mapper 接口

定义一个 Mapper 接口来描述数据库操作。@Select 注解用于定义 SQL 查询:

package com.example.mapper;

import com.example.model.User;
import org.apache.ibatis.annotations.Select;

public interface UserMapper {
    /**
     * 根据 ID 查询用户
     * @param id 用户 ID
     * @return User 对象
     */
    @Select("SELECT * FROM users WHERE id = #{id}")
    User getUserById(int id);
}

2.4 创建 Mapper XML 文件(可选)

如果你喜欢使用 XML 来定义 SQL 查询,可以创建 Mapper XML 文件。这个文件用于描述 SQL 语句和映射关系:


    
    

2.5 配置数据源和 SqlSessionFactory

在 Spring 配置文件中设置数据源和 SqlSessionFactory。数据源用于连接数据库,SqlSessionFactory 用于创建 SQL 会话:

@Configuration@MapperScan("com.example.mapper")
public class MyBatisConfig {
    @Bean
    public DataSource dataSource() {
        // 创建和配置数据源
        return new DriverManagerDataSource("jdbc:mysql://localhost:3306/testdb", "user", "password");
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        // 创建 SqlSessionFactory 对象
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        return sessionFactoryBean.getObject();
    }
}

2.6 使用 Mapper

在服务层中使用 Mapper 接口来执行数据库操作。下面的代码展示了如何使用 UserMapper 查询用户信息:

@Servicepublic class UserService {
    @Autowired
    private UserMapper userMapper;

    /**
     * 根据用户 ID 获取用户信息
     * @param id 用户 ID
     * @return User 对象
     */
    public User getUser(int id) {
        return userMapper.getUserById(id);
    }
}

三、如何使用 MyBatis-Plus

3.1 添加依赖

在 Maven 项目中,添加 MyBatis-Plus 的依赖。下面的代码块是 pom.xml 文件中的配置:


    
    com.baomidou
    mybatis-plus-boot-starter
    3.5.1 

3.2 配置 MyBatis-Plus

application.yml 文件中配置 MyBatis-Plus。这里设置了 Mapper 文件的位置和全局配置:

mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml
  global-config:
    db-config:
      id-type: auto  # 主键生成策略为自增

3.3 创建实体类

定义与数据库表对应的实体类。使用 @TableName 注解指定表名,@TableId 注解指定主键生成策略:

@TableName("users")
public class User {
    @TableId(type = IdType.AUTO)
    private Integer id;  // 用户 ID
    private String name; // 用户名称
    private Integer age; // 用户年龄
    // getters and setters
}

3.4 创建 Mapper 接口

使用 MyBatis-Plus 提供的 BaseMapper 接口来进行 CRUD 操作。BaseMapper 提供了通用的 CRUD 方法:

@Mapperpublic interface UserMapper extends BaseMapper {
}

3.5 使用 MyBatis-Plus 提供的功能

在服务层中使用 MyBatis-Plus 的方法来执行数据库操作。例如,使用 selectById 方法根据 ID 查询用户信息:

@Servicepublic class UserService {
    @Autowired
    private UserMapper userMapper;

    /**
     * 根据用户 ID 获取用户信息
     * @param id 用户 ID
     * @return User 对象
     */
    public User getUser(int id) {
        return userMapper.selectById(id);
    }
}

3.6 (可选)创建代码生成器

使用 MyBatis-Plus 的代码生成器自动生成代码。这可以帮助你快速生成实体类和 Mapper 接口:

public class CodeGenerator {
    public static void main(String[] args) {
        AutoGenerator autoGenerator = new AutoGenerator();

        // 设置全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir("src/main/java");
        globalConfig.setAuthor("author");
        globalConfig.setOpen(false);
        autoGenerator.setGlobalConfig(globalConfig);

        // 设置数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/testdb");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("user");
        dataSourceConfig.setPassword("password");
        autoGenerator.setDataSource(dataSourceConfig);

        // 设置包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.example");
        autoGenerator.setPackageInfo(packageConfig);

        // 执行代码生成
        autoGenerator.execute();
    }
}

总结

MyBatis 和 MyBatis-Plus 都是强大的持久层框架,可以帮助 Java 开发者简化数据库操作。MyBatis 提供了 SQL 映射的灵活性,而 MyBatis-Plus 在此基础上增加了许多便捷功能,减少了重复的工作。通过本指南,你可以快速上手这两个框架,并在实际项目中应用它们来提高开发效率。希望你能在实践中不断探索,掌握更多的技巧和最佳实践!

你可能感兴趣的:(Java,java,mybatis)