# mybatis-pro
**Repository Path**: Dreamroute/mybatis-pro
## Basic Information
- **Project Name**: mybatis-pro
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 0
- **Created**: 2020-08-11
- **Last Updated**: 2023-08-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MyBatis-Pro,持久化框架最终兵器

### **大道至简,优雅解决MyBatis单表的一切问题**
## **源码地址**
- [GitHub](https://github.com/Dreamroute/mybatis-pro.git)
- [码云](https://gitee.com/Dreamroute/mybatis-pro)
## 使用文档
- [完整中文文档](https://github.com/Dreamroute/mybatis-pro/wiki/MyBatis-Pro%EF%BC%8C%E6%8C%81%E4%B9%85%E5%8C%96%E6%A1%86%E6%9E%B6%E6%9C%80%E7%BB%88%E5%85%B5%E5%99%A8)
## **开发此框架的初衷**
- 让单表查询更加优雅
- 基本告别单表SQL语句
- 媲美JPA的单表查询优势
- 拒绝重复造轮子
- 钢铁直男的终极选择
## 框架功能
- 无需手动编写单表增删改查方法,框架自动生成
- 与通用Mapper、MyBatis-Plus等三方框架兼容(三者选其一即可,功能类似)
- 【可选】内置枚举类型处理器,优雅解决枚举类型问题,无需手动转换
- 【可选】内置泛型Service,避免重复造轮子编写大量类似的Service方法代码
- 【可选】内置两种方式逻辑删除,可放心大胆的在生产环境进行delete操作,不用担心误删数据
- 【可选】[分页插件](https://github.com/Dreamroute/pager)支持单表、多表关联查询、支持复杂的多表分页查询
- 【可选】[sql打印插件](https://github.com/Dreamroute/sqlprinter)已经用实际参数替换了?占位符,可以从日志文件拷贝出来直接执行
- 【可选】[乐观锁插件](https://github.com/Dreamroute/locker)透明解决乐观锁问题
## 设计原则
框架本身依赖mybatis-spring,仅在应用启动时织入框架逻辑,不破坏任何mybatis核心,原则上可以兼容任何mybatis版本
## 版本要求
- JDK 1.8+
- maven-compiler-plugin编译插件不要关闭`-parameters`,因为需要通过反射获取参数名称(这是jdk8的特性)
## 使用方式
- SpringBoot
```xml
com.github.dreamroute
mybatis-pro-boot-starter
latest version
```
### 最新版本:[点击查看](https://search.maven.org/artifact/com.github.dreamroute/mybatis-pro-boot-starter)
## 功能展示
- 单表条件查询
```java
public interface UserMapper {
// 这是一个根据用户名、密码查询单个用户的查询,方法名只需要以findBy打头,接着方法名为: NameAndPassword
User findByNameAndPassword(String name, String password);
}
```
你无需在xml文件中编写sql,也无需使用注解@Select("xxx")的sql,框架自动根据方法名:
**findByNameAndPassword**切割成`findBy`,`Name`, `And`, `Password`,组成如下sql:
`select * from user where name = #{name} and password = #{password}`
## 对比(mybatis-plus、通用mapper)
> **需求:查询字段version字段大小在2~4之间,并且根据id反向排序**
- mybatis-pro:
```java
@Test
void proTest() {
List users = findByVersionBetweenOrderByIdDesc(2L, 4L);
}
```
- mybatis-plus:
```java
@Test
void plusTest() {
LambdaQueryWrapper qw = new LambdaQueryWrapper<>();
LambdaQueryWrapper query = qw.between(User::getVersion, 2L, 4L);
query.orderByDesc(User::getId);
List users = userMapper.selectList(query);
}
```
- 通用mapper
```java
@Test
void mapperTest() {
Example e = new Example(User.class);
e.orderBy("id").desc();
Criteria criteria = e.createCriteria().andBetween("version", 2L, 4L);
List users = userMapper.selectByExample(e);
}
```
## 全部文档
- [完整中文文档](https://github.com/Dreamroute/mybatis-pro/wiki/MyBatis-Pro%EF%BC%8C%E6%8C%81%E4%B9%85%E5%8C%96%E6%A1%86%E6%9E%B6%E6%9C%80%E7%BB%88%E5%85%B5%E5%99%A8)
## 作者信息
Email: 342252328@qq.com