下面就来详细讲解 “浅析Mybatis Plus和Mybatis的区别”的完整攻略。
什么是Mybatis?
Mybatis 是一款基于 Java 的持久层框架,它封装了 JDBC 操作,简化了 JDBC 操作繁琐的过程,使得开发者能够将精力集中到 SQL 的编写上面。
Mybatis 的特点:
- 操作简单、方便,对开发者友好
- 灵活度高,可以定制化 SQL
- 提供映射文件直观展示 SQL
- SqlSession 的生命周期短,避免了多线程并发满足专一性等问题
但是,Mybatis 存在以下一些缺点:
- SQL 代码需要手写,有一定的开发成本
- 分页、乐观锁、缓存等功能需要手动实现
- 自动更新表结构需要手写 SQL 脚本
为了解决这些缺点,Mybatis Plus 应运而生。
什么是Mybatis Plus?
Mybatis Plus 是 Mybatis 的增强工具,它封装了 Mybatis 的一些通用的增删改查功能和一些常用的操作,可以使开发者更加便捷地使用 Mybatis 进行数据库操作,将开发效率大大提高。
Mybatis Plus 的优点:
- 提供了许多乐观锁、分页、跨库等方便的功能
- 部分 SQL 自动生成,减轻了开发压力
- 同步 JPA 规范,提供了强类型支持
- 推广了 ActiveRecord 的编程风格
下面我们通过两条示例来进一步理解 Mybatis Plus 和 Mybatis 的区别。
示例一
在 Mybatis 中,更新数据的代码通常是这样的:
public void update(User user) {
SqlSession session = sqlSessionFactory().openSession();
try {
session.update("UserMapper.update", user);
session.commit();
} finally {
session.close();
}
}
而在 Mybatis Plus 中,只需实现 IUpdate 接口即可:
public void update(User user) {
userMapper.updateById(user);
}
在 Mybatis 中,需要使用 xml 来实现动态 SQL,而在 Mybatis Plus 中,可以用 Lambda 表达式来实现简单的动态 SQL,例如:
public void selectByName(String name) {
List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().eq(User::getName, name));
}
示例二
在 Mybatis 中,实现分页功能需要手动添加分页查询语句,并且手动计算分页信息,代码如下:
public void selectByPage(int pageNum, int pageSize) {
SqlSession session = sqlSessionFactory().openSession();
List<User> users = new ArrayList<>();
try {
int startIndex = (pageNum - 1) * pageSize;
users = session.selectList("UserMapper.selectByPage", null, new RowBounds(startIndex, pageSize));
} finally {
session.close();
}
}
而在 Mybatis Plus 中,只需传入分页信息即可:
public void selectByPage(int pageNum, int pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
QueryWrapper<User> wrapper = new QueryWrapper<>();
IPage<User> pageResult = userMapper.selectPage(page, wrapper);
List<User> users = pageResult.getRecords();
}
总结
两者的区别:
- Mybatis Plus 提供了诸多常用功能,默认实现了 ID 策略、通用 CRUD 操作、自动分页等,大大加快了开发效率。
- 使用 Mybatis Plus 可以按照 JPA 的编程规范进行开发,强类型的支持能有效避免 SQL 注入等安全问题。
- Mybatis Plus 的 Lambda 表达式能够实现 SQL 动态构造,使用起来非常方便。
综上所述,推荐在选择持久层框架时优先考虑 Mybatis Plus,本身的使用体验和开发效率都要比 Mybatis 更佳,为 Java 的开发带来了很大的便利。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅析Mybatis Plus和Mybatis的区别 - Python技术站