10分钟上手Mybatis Common Mapper:低代码平台的数据库操作革命

10分钟上手Mybatis Common Mapper:低代码平台的数据库操作革命

【免费下载链接】Mapper Mybatis Common Mapper - Easy to use 【免费下载链接】Mapper 项目地址: https://gitcode.com/gh_mirrors/ma/Mapper

你还在手写重复的SQL语句吗?还在为简单的CRUD操作编写大量样板代码吗?本文将带你10分钟快速上手Mybatis Common Mapper(通用Mapper),体验低代码开发带来的效率提升,彻底解放双手,让数据库操作变得简单高效。

读完本文你将获得:

  • 了解Mybatis Common Mapper的核心优势
  • 掌握在Spring Boot项目中快速集成通用Mapper的方法
  • 学会使用通用Mapper进行基本的数据库CRUD操作
  • 了解通用Mapper的高级特性和最佳实践

什么是Mybatis Common Mapper

Mybatis Common Mapper是一个基于MyBatis的通用Mapper框架,它提供了一系列通用的CRUD接口,可以极大地简化数据库操作代码的编写。通过继承通用Mapper提供的接口,开发者无需编写XML映射文件和SQL语句,即可快速实现对单表的增删改查操作。

官方文档:README.md

通用Mapper的核心设计理念是"约定优于配置",通过注解和接口继承的方式,自动生成SQL语句,减少重复劳动,提高开发效率。它支持多种数据库方言,包括MySQL、SQL Server等,并且可以与Spring、Spring Boot等主流框架无缝集成。

快速集成:Spring Boot项目配置

添加依赖

在Spring Boot项目中集成通用Mapper非常简单,只需在pom.xml中添加以下依赖:

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>

依赖配置文件:spring-boot-starter/pom.xml

配置应用属性

一般情况下,通用Mapper不需要额外配置即可使用。如果需要自定义配置,可以在application.properties中添加相关属性:

# 配置自定义Mapper接口
mapper.mappers[0]=tk.mybatis.sample.mapper.BaseMapper
# 数据库方言配置
mapper.identity=MYSQL

配置属性提示:

配置属性自动提示

启动类配置

在Spring Boot启动类上添加@MapperScan注解,指定Mapper接口所在的包路径:

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Spring集成模块:spring/

核心接口:BaseMapper详解

通用Mapper的核心是BaseMapper接口,它整合了常用的CRUD操作方法。该接口位于tk.mybatis.mapper.common包下,定义如下:

@RegisterMapper
public interface BaseMapper<T> extends
        BaseSelectMapper<T>,
        BaseInsertMapper<T>,
        BaseUpdateMapper<T>,
        BaseDeleteMapper<T> {
}

BaseMapper源码:base/src/main/java/tk/mybatis/mapper/common/BaseMapper.java

通过继承BaseMapper,我们的Mapper接口将自动获得以下几类方法:

  • 查询操作:包括根据ID查询、查询所有、条件查询等
  • 插入操作:包括保存实体、批量保存等
  • 更新操作:包括根据ID更新、条件更新等
  • 删除操作:包括根据ID删除、条件删除等

实战演练:快速实现CRUD操作

定义实体类

首先创建一个与数据库表对应的实体类,使用JPA注解进行映射:

@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "username")
    private String username;
    
    @Column(name = "password")
    private String password;
    
    // 省略getter和setter方法
}

实体类示例:base/src/test/java/tk/mybatis/mapper/model/User.java

创建Mapper接口

创建UserMapper接口,继承BaseMapper:

public interface UserMapper extends BaseMapper<User> {
    // 无需编写任何方法,直接继承BaseMapper的所有操作
}

执行数据库操作

现在就可以在Service中注入UserMapper,直接调用其方法进行数据库操作了:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    
    // 查询所有用户
    public List<User> findAll() {
        return userMapper.selectAll();
    }
    
    // 根据ID查询用户
    public User findById(Long id) {
        return userMapper.selectByPrimaryKey(id);
    }
    
    // 新增用户
    public int save(User user) {
        return userMapper.insert(user);
    }
    
    // 更新用户
    public int update(User user) {
        return userMapper.updateByPrimaryKey(user);
    }
    
    // 删除用户
    public int delete(Long id) {
        return userMapper.deleteByPrimaryKey(id);
    }
}

Service实现示例:spring/src/test/java/tk/mybatis/mapper/annotation/SpringAnnotationTest.java

高级特性:条件查询与分页

条件查询

通用Mapper提供了Example类,可以方便地构建查询条件:

// 创建查询条件
Example example = new Example(User.class);
example.createCriteria()
       .andEqualTo("username", "admin")
       .andGreaterThan("id", 10);
// 执行查询
List<User> users = userMapper.selectByExample(example);

Example类源码:core/src/main/java/tk/mybatis/mapper/entity/Example.java

分页查询

结合PageHelper分页插件,可以轻松实现分页功能:

// 设置分页参数
PageHelper.startPage(1, 10);
// 执行查询
List<User> users = userMapper.selectAll();
// 获取分页信息
PageInfo<User> pageInfo = new PageInfo<>(users);

分页插件推荐:PageHelper分页插件

最佳实践与注意事项

表名与字段映射

通用Mapper默认使用类名作为表名,属性名作为字段名。如果数据库表名或字段名与实体类不一致,可以使用@Table@Column注解进行映射。

主键策略

通用Mapper支持多种主键生成策略,通过@GeneratedValue注解指定:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 自增主键
private Long id;

主键策略定义:core/src/main/java/tk/mybatis/mapper/annotation/KeySql.java

避免N+1查询问题

在关联查询时,应注意避免N+1查询问题,可以使用@Result注解定义关联查询,或使用MyBatis的延迟加载功能。

批量操作

对于批量插入、更新操作,推荐使用通用Mapper提供的批量操作方法,以提高性能:

// 批量插入
List<User> users = new ArrayList<>();
// 添加用户...
userMapper.insertList(users);

批量操作接口:extra/src/main/java/tk/mybatis/mapper/additional/insert/InsertListMapper.java

总结与展望

通过本文的介绍,我们了解了Mybatis Common Mapper的基本使用方法和核心优势。它通过提供通用的CRUD接口,极大地减少了重复代码的编写,提高了开发效率。结合Spring Boot框架,可以快速构建高效、简洁的数据库访问层。

通用Mapper还提供了许多高级特性,如动态SQL、存储过程支持、类型处理器等,等待你去探索和使用。

项目完整源码:gh_mirrors/ma/Mapper

希望本文能帮助你快速上手Mybatis Common Mapper,体验低代码开发带来的便利。如果你有任何问题或建议,欢迎在评论区留言讨论。

点赞+收藏+关注,获取更多MyBatis和低代码开发相关的实用教程!下期我们将介绍通用Mapper的高级特性和性能优化技巧,敬请期待!

【免费下载链接】Mapper Mybatis Common Mapper - Easy to use 【免费下载链接】Mapper 项目地址: https://gitcode.com/gh_mirrors/ma/Mapper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值