# jdbc-plus
**Repository Path**: testasf/jdbc-plus
## Basic Information
- **Project Name**: jdbc-plus
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-10-20
- **Last Updated**: 2023-10-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🚀 jdbc-plus简介
🚀 jdbc-plus是一款基于JdbcTemplate增强工具包,基于JdbcTemplate已实现分页、多租户、动态表名等插件,可与mybatis、mybatis-plus等混合使用,还可以十分简单的扩展自定义插件。
## 🍅 **特性**
- 使用简单,对代码入侵很小,可与mybatis、mybatis-plus等混合使用
- 已实现分页、多租户、动态表名等插件,还可以十分简单的扩展自定义插件
- 免费开源,可任意使用修改代码
- 只对ORM框架增强不做任何改变,当需要动态执行SQL不是很方面使用ORM框架执行SQL时,jdbc-plus就能发挥作用
## 🍆 **插件(持续扩展中)**
已内置以下插件,开箱即用,还可以自行扩展插件,扩展插件方法十分简单。
- **分页插件**:与PageHelper使用方法一致,还可以注册不支持的数据库
- **多租户插件**:与mybatis-plus多租户插件使用方法一致,理论上与mybatis-plus多租户插件支持度一样
- **动态表名插件**:与mybatis-plus动态表名插件使用方法一致
- **更多插件**:持续关注jdbc-plus仓库,仓库包含所有插件源代码以及使用示例
## **🏠** **项目开源地址**
https://github.com/deeround/jdbc-plus
# 快速开始
1. 引入jdbc-plus-spring-boot-starter
~~~ xml
com.github.deeround
jdbc-plus-spring-boot-starter
${version}
~~~
2. 注入需要使用的插件(需要哪个注入哪个,不需要的注释掉即可)
~~~ java
@Configuration
public class JdbcPlusConfig {
/**
* TenantLineInterceptor是内置的多租户插件
*/
@Bean
@Order(1)
public IInterceptor tenantLineInterceptor() {
return new TenantLineInterceptor(new TenantLineHandler() {
/**
* 当前租户ID
*/
@Override
public Expression getTenantId() {
String currentTenantId = "test_tenant_1";//可以从请求上下文中获取(cookie、session、header等)
return new StringValue(currentTenantId);
}
/**
* 租户字段名
*/
@Override
public String getTenantIdColumn() {
return "tenant_id";
}
/**
* 根据表名判断是否忽略拼接多租户条件
*/
@Override
public boolean ignoreTable(String tableName) {
return TenantLineHandler.super.ignoreTable(tableName);
}
});
}
/**
* DynamicTableNameInterceptor是内置的动态表名插件
*/
@Bean
@Order(2)
public IInterceptor dynamicTableNameInterceptor() {
return new DynamicTableNameInterceptor(new TableNameHandler() {
@Override
public String dynamicTableName(String sql, String tableName) {
if ("test_log".equals(tableName)) {
return tableName + "_" + LocalDateTime.now().getYear();
}
return tableName;
}
});
}
/**
* PaginationInterceptor是内置的分页插件(分页插件一般情况放置最后)
*/
@Bean
@Order(9)
public IInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/**
* 自定义插件注入,注入位置按实际情况
*/
@Bean
@Order(0)
public IInterceptor myStatInterceptor() {
return new MyStatInterceptor();
}
}
~~~
3. 正常使用JdbcTemplate执行SQL语句,代码零入侵,使用体验超棒
~~~ java
@Autowired
JdbcTemplate jdbcTemplate;
public void insert() {
this.jdbcTemplate.update("insert into test_user(id,name) values('1','wangwu')");
//最终执行SQL:insert into test_user(id,name,tenant_id) values('1','wangwu','test_tenant_1')
}
public void delete() {
this.jdbcTemplate.update("delete from test_user where id='1'");
//最终执行SQL:delete from test_user where id='1' and tenant_id='test_tenant_1'
}
public void update() {
this.jdbcTemplate.update("update test_user set name='lisi' where id='1'");
//最终执行SQL:update test_user set name='lisi' where id='1' and tenant_id='test_tenant_1'
}
public List