# mybatis-enhance
**Repository Path**: noxcode/mybatis-enhance
## Basic Information
- **Project Name**: mybatis-enhance
- **Description**: Enhance是对于原生的MyBatis的增强编写,不影响任何原生的使用,使用后完全替代mybatis-core、mybatis-spring以及mybatis-spring-boot-starter,可以使用SpringBoot配置文件的形式进行配置相关的内容,尽可能强大的方便快速的集成MyBatis。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://github.com/hengyuboy/mybatis-enhance
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 51
- **Created**: 2020-07-23
- **Last Updated**: 2022-06-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 欢迎使用MyBatis Enhance
[](https://maven-badges.herokuapp.com/maven-central/com.gitee.hengboy/spring-boot-starter-mybatis-enhance)
### 欢迎关注公众号

关注微信公众号,回复`加群`,获取交流群群号。
#### 使用示例
请访问项目:[mybatis-enhance-sample](https://gitee.com/hengboy/mybatis-enhance-sample)
#### MyBatis Enhance是什么?
`Enhance`是对于原生的`MyBatis`的增强编写,不影响任何原生的使用,使用后完全替代`mybatis-core`、`mybatis-spring`以及`mybatis-spring-boot-starter`,可以使用`SpringBoot`配置文件的形式进行配置相关的内容,尽可能强大的方便快速的集成`MyBatis`。
除此之外还提供了`单表基础数据`的`CRUD`操作以及部分`批量数据`的操作,可以不再使用`MyBatis`提供的自动生成的方式对单个数据表进行数据操作,当然如果你想使用也是可以的。
`Enhance`还规划了多个数据表之间的动态查询方式,这种方式可以让你体验到你在使用`Java代码`编写`SQL语句`,极大方便的关联、聚合、多表查询字段等常用数据动作(`1.0.3.RELEASE`暂未支持)。
#### 使用环境
目前`SpringBoot`的发展趋势已经势如破竹,为了更方便的使用,所以`Enhance`暂时只允许在集成了`SpringBoot`框架的项目中使用。
- `SpringBoot1.x`以上版本
- `JDK 1.6`以上版本
#### 安装
安装比较简单,在引用`Enhance`的项目中你还需要添加你使用的`数据库驱动`以及`数据源`,`Enhance`并不会限制这一点,由于`Enhance`相关的`jar`已经上传到`Maven Center Repository`所以我们只需要添加依赖即可,开发工具会自动下载相关的依赖包。
- 使用`Maven`构建工具时,复制下面的内容到`pom.xml`配置文件内
```
com.gitee.hengboy
spring-boot-starter-mybatis-enhance
{lastVersion}
```
- 如果你是用的`Gradle`构建工具,那么复制下面的内容到你的`build.gradle`
```
compile group: 'com.gitee.hengboy', name: 'spring-boot-starter-mybatis-enhance', version: '{lastVersion}'
```
> 注意:需要将`lastVersion`版本号更换为最新中央仓库的`mybatis-enhance`版本号即可.
#### 该怎么使用呢?
##### 实体的创建
根据对应数据库内的表来创建实体,`Enhance`采用的是`Spring Data JPA`的形式来管理实体类,并且已经预先提供的一些`Annotation`,`数据实体(Entity)`对应数据库内的`数据表(Table)`,下面是一个简单的实体代码:
```
/**
* 用户数据实体
*
* @author:于起宇
* ===============================
* Created with IDEA.
* Date:2018/5/13
* Time:8:53
* 简书:http://www.jianshu.com/u/092df3f77bca
* ================================
*/
@Data
@Table(name = "test_user_info")
public class UserInfoEntity implements Serializable {
/**
* 用户编号
*/
@Id(generatorType = KeyGeneratorTypeEnum.AUTO)
@Column(name = "TUI_ID")
private Integer userId;
/**
* 用户名
*/
@Column(name = "TUI_NAME")
private String userName;
/**
* 年龄
*/
@Column(name = "tui_age")
private Integer age;
/**
* 地址
*/
@Column(name = "tui_address")
private String address;
}
```
我采用了跟`Spring Data JPA`相同命名方式的注解,这样也方便大家在使用`Enhance`时可以快速的转换注解的使用。
##### Mapper的创建
创建`Mapper`跟我们使用原生`MyBatis`创建方式一样,不过使用`Enhance`后不需要添加`@Mapper`注解,你创建的`Mapper`只需要继承`EnhanceMapper`接口就可以被扫描到,并且同时可以获取内部提供的`CRUD`方法!!!
如下所示:
```
/**
* 用户基本信息数据接口
*
* @author:于起宇
* ===============================
* Created with IDEA.
* Date:2018/5/13
* Time:9:00
* 简书:http://www.jianshu.com/u/092df3f77bca
* ================================
*/
public interface UserInfoMapper extends EnhanceMapper {
}
```
`EnhanceMapper`需要两个泛型,第一个是实体类的类型,第二个则是实体类主键的类型,这样方便我们在传参或者返回值时做到统一,否则还需要进行`Object`类型的转换,那样不仅麻烦还会提高运行成本,详细介绍请阅读 [使用文档](https://gitee.com/hengboy/mybatis-enhance/blob/master/README.md)
##### 暂时内置的方法
```
// 统计数据
Long countAll() throws EnhanceFrameworkException;
// 清空数据
void deleteAll() throws EnhanceFrameworkException;
// 根据主键数组删除指定数据
void deleteArray(Id... ids) throws EnhanceFrameworkException;
// 根据自定义sql删除数据
void deleteBySql(String sql, Map params) throws EnhanceFrameworkException;
// 根据主键集合删除指定数据
void deleteCollection(Collection collection) throws EnhanceFrameworkException;
// 删除一条数据
void deleteOne(Id id) throws EnhanceFrameworkException;
// 数据保存
void insert(T t) throws EnhanceFrameworkException;
// 保存数组内的所有数据
void insertArray(T... array) throws EnhanceFrameworkException;
// 保存集合内的所有数据
void insertCollection(Collection collection) throws EnhanceFrameworkException;
// 查询全部数据
List selectAll() throws EnhanceFrameworkException;
// 根据主键数组查询指定数据
List selectArray(Id... ids) throws EnhanceFrameworkException;
// 分页查询数据
List selectByPageable(Pageable pageable) throws EnhanceFrameworkException;
// 自定义sql查询数据
List