# native-jdbc
**Repository Path**: jzlol/native-jdbc
## Basic Information
- **Project Name**: native-jdbc
- **Description**: 基于原生jdbc实现的微持久层工具,该工具的定位是为了解决线上或者测试环境下简单的数据库操作,而不需要引入太复杂的框架。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-12-05
- **Last Updated**: 2024-08-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: JDBC, Java, java-util, dbutil
## README
# native-jdbc
## 主要目标
不借助任何的第三方持久层框架,实现jdbc的基本操作,主打一个轻量级,功能不用实现的太复杂、太多
## 示例
**引入依赖**
```xml
com.zys
native-jdbc
1.0
```
**初始化DirectConnectSqlExecutor**
```java
ConnectionBuilder connectionBuilder = ConnectionBuilder.builder()
.driver("com.mysql.cj.jdbc.Driver")
.jdbcUrl("jdbc:mysql://localhost:3306/test")
.username("root")
.password("123456").build();
sqlExecutor = new DirectConnectSqlExecutor(connectionBuilder);
```
**初始化PooledSqlExecutor**
```java
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
datasourceSqlExecutor = new PooledSqlExecutor(dataSource);
```
**查询单条数据**
> 1.RowConvert方式
```java
GuijiTableEntity result = sqlExecutor.query(sql, new RowConverter() {
@Override
public GuijiTableEntity convert(ResultSet resultSet) {
GuijiTableEntity guijiTableEntity = new GuijiTableEntity();
try {
guijiTableEntity.setOrder_code(resultSet.getString("order_code"));
guijiTableEntity.setTable_name(resultSet.getString("table_name"));
guijiTableEntity.setTotal_data(resultSet.getString("total_data"));
} catch (SQLException e) {
throw new RuntimeException(e);
}
return guijiTableEntity;
}
});
```
---
> 2.Class方式
```java
GuijiTableEntity query = sqlExecutor.query(sql, GuijiTableEntity.class);
```
---
> 3.Map方式
```java
Map data = sqlExecutor.queryForMap(sql);
```
---
> 4.带参数
```java
GuijiTableEntity data = sqlExecutor.query(wsql, Arrays.asList(523584), GuijiTableEntity.class);
```
---
**查询列表**
这里就不一一列举所有的方法了,与单个查询类似,列表查询也提供了多种方式进行构建,这里使用class方式来演示
```java
List guijiTableEntities = datasourceSqlExecutor.queryForList(wsql, GuijiTableEntity.class);
```
**执行非查询操作**
> 1.执行insert语句
```java
String executeSql = "insert into test values(?)";
sqlExecutor.execute(executeSql, Arrays.asList(6));
```
> 2.批量执行insert语句
```java
List