# beetl-plus
**Repository Path**: lcz-wj/beetl-plus
## Basic Information
- **Project Name**: beetl-plus
- **Description**: 一个基于 BeetlSQL、MyBatis、MyBatis-Plus 及 MyBatis-Plus-Join 开发的小巧工具,旨在**简化数据库操作,减少冗余代码**
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 0
- **Created**: 2025-07-01
- **Last Updated**: 2025-07-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, MySQL, Beetl
## README
# Beetl-Plus

一个基于 BeetlSQL、MyBatis、MyBatis-Plus 及 MyBatis-Plus-Join 开发的小巧工具,旨在**简化数据库操作,减少冗余代码**。
## 🌟 项目简介
你是否厌倦了在项目中反复编写相似的 CRUD(增删改查)代码?你是否希望数据库操作能更智能、更简洁?
那么,这个工具或许正是你需要的!它**开箱即用**,通过巧妙的代码设计,能够自动判定目标数据库类型,并智能地拼接 SQL
语句,从而实现基本的数据库 CRUD 功能。让你的开发流程更加顺畅,代码更加精简!
## ✨ 核心特性
* **智能 SQL 拼接**:无需手动拼接 SQL,工具会根据代码逻辑自动生成,支持主流数据库。
* **减少代码量**:显著降低项目中与数据库交互相关的样板代码,提升开发效率。
* **开箱即用**:配置简单,快速集成到现有项目中。
* **自动数据库适配**:内置机制判定当前使用的数据库类型,自动调整 SQL 语法。
## 🚀 快速开始
```bash
com.qen
beetl-plus
1.0.0
```
SQL执行时间记录:CustomLogInterceptor类
```java
import com.qen.interceptor.CustomLogInterceptor;
@Bean
public SqlManagerFactoryBean sqlManagerFactoryBean(
@Qualifier("masterDataSource") DataSource masterDataSource,
@Qualifier("slaveDataSources") List slaveDataSources,
@Qualifier("dataSourceDruidProperties") DataSourceDruidProperties dataSourceDruidProperties) {
SpringConnectionSource source = new SpringConnectionSource();
source.setMasterSource(masterDataSource);
if (slaveDataSources != null && !slaveDataSources.isEmpty()) {
source.setSlaveSource(slaveDataSources.toArray(new DataSource[0]));
}
SqlManagerFactoryBean factoryBean = new SqlManagerFactoryBean();
factoryBean.setCs(source);
factoryBean.setNc(new UnderlinedNameConversion());//UnderlinedNameConversion,把下划线去掉,其后字母大写。最为常用,也符合数据库设计规范;
factoryBean.setDbStyle(initDbStyle(dataSourceDruidProperties.getBeetlsql().getDbstyle()));
factoryBean.setInterceptors(new Interceptor[]{new CustomLogInterceptor()});
return factoryBean;
}
```
```java
@Table(name = "t_generic")
@Data
public class Generic {
@Column("id")
@AutoID
private Long id;
@Column("name")
private String name;
@Column("real_name")
private String realName;
@Column("del_flag")
@LogicDel
private Integer delFlag;
}
import com.qen.repository.BaseDao;
public interface GenericDao extends BaseDao {
}
import com.qen.repository.BaseImpl;
@Repository("testGenericDao")
public class GenericDaoImpl extends BaseImpl implements GenericDao {
}
import com.qen.service.IService;
public interface GenericService extends IService {
}
import com.qen.service.ServiceImpl;
@Service
public class GenericServiceImpl extends ServiceImpl implements GenericService {
}
@RestController
@RequestMapping("/generic")
public class GenericAction {
@Autowired
private GenericDao genericDao;
@Autowired
private GenericService genericService;
@GetMapping("/{id}")
public ResponseEntity get() {
LambdaWrapper wrapper = Wrappers.lambdaJoin(Generic.class)
.leftJoin(Users.class, Users::getId, Generic::getId)
.eq(Generic::getId, 5)
.eq(Users::getUsername, "admin")
.selectAs(Generic::getId, GenericVo::getId)
.selectAs(Generic::getRealName, GenericVo::getRealname)
.selectAs(Generic::getName, GenericVo::getName)
.selectAs(Generic::getDelFlag, GenericVo::getDelflag)
.selectAs(Users::getUsername, GenericVo::getUsername);
GenericVo genericVo = genericDao.selectJoinOne(GenericVo.class, wrapper);
Wrapper wrapper = new LambdaQueryWrapper<>(Generic.class)
.eq(Generic::getId, id)
.like(Generic::getName, "2")
.groupBy(Generic::getId)
.orderByAsc(Generic::getId)
.comment(" this is comment ");
genericService.delete(wrapper);
Wrapper wrapper = new LambdaUpdateWrapper()
.set(Generic::getName, "NameUp")
.set(Generic::getRealName, "RealNameUp")
.eq(Generic::getId, 1);
genericService.update(RoleResources.class, wrapper);
return ResponseEntity.ok(ApiResponse.success(genericVo));
}
}
```
## 🛠️ 技术栈
* Java 8+
* BeetlSQL
* MyBatis
* MyBatis-Plus
* MyBatis-Plus-Join
## 📜 版本信息
* **当前版本**: v1.0-SNAPSHOT (示例)
* **兼容 JDK**: JDK 8 (当前版本)
## 🤝 贡献与反馈
欢迎社区贡献!无论是提交 Bug 报告、提出功能建议,还是直接参与代码开发,都请随时联系我们。
* **报告 Bug** / **提出建议**: [Issues](https://gitee.com/lcz-wj/beetl-plus/issues)
* **参与贡献**: Fork 仓库,提交 Pull Request。
## 📄 许可证
本项目采用 [Apache-2.0] 许可证。详情请参阅 [LICENSE](LICENSE) 文件。