# yfSql
**Repository Path**: yfblock/yfSql
## Basic Information
- **Project Name**: yfSql
- **Description**: java database orm framework
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 12
- **Forks**: 1
- **Created**: 2021-05-18
- **Last Updated**: 2023-02-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# yfSql
> 一个独立的JDBC框架
> Author: Yufeng
### 一、安装
##### 使用maven方式安装
```xml
io.github.yfblock
yfSql
1.1.2
```
##### 使用gradle方式安装
```groovy
implementation 'io.github.yfblock:yfSql:1.1.2'
annotationProcessor 'io.github.yfblock:yfSql:1.1.2'
```
### 二、添加数据库
此数据库操作库仅仅提供操作接口 需要再添加数据库依赖
### 三、设置数据库
```java
import io.github.yfblock.yfSql.Annotation.DatabaseConnection;
import io.github.yfblock.yfSql.Runner.SqlRunner;
public class DatabaseConfig extends SqlRunner {
/**
* SqliteRunner Constructor, build a sqlite runner
*/
public DatabaseConfig() {
// sqlite
super("org.sqlite.JDBC", "jdbc:sqlite:test.db", "", "");
// 如果是 mysql
// super("com.mysql.cj.jdbc.Driver", "jdbc:mysql://localhost:3306/数据库名称", "用户名", "密码");
}
}
```
如果需要使用其他的数据库,配置数据库时,需要在`构造函数`调用 `super("jdbc_driver', 'url', 'username', 'password')`
##### 四、使用wrapper
实体类User.java eg: 使用时尽量使用引用类型
```java
package Test;
import lombok.Data;
import io.github.yfblock.yfSql.Annotation.DataField;
@Data
public class User {
private Integer id;
private String username;
private String password;
private String qq;
// 如果java中的属性名与数据库中不对应, 则可以使用DataField注解
@DataField("phone")
private String userPhone;
}
```
UserWrapper.java
```java
@DataRunner(DatabaseConfig.class)
// 目前只能在 interface 上使用
public interface UserWrapper {
@Select("select * from user")
public ArrayList getUsers() throws SQLException;
// Find 时返回值不需要 List
@Find("select * from user where username={0} and password={1}")
public User login(String username, String password) throws SQLException;
@Find("select * from user where balance > {0}")
public User getUserByBalance(int balance) throws SQLException;
@Insert("insert into user (username, password) VALUES ({0}, {1})")
public Integer register(String username, String password) throws SQLException;
@Update("update user set qq={0} where id={1}")
public void updateQQById(String qq, int id) throws SQLException;
@Delete("delete from user where id={0}")
public void deleteUserById(int id) throws SQLException;
}
```
上述为增删改查结构样例,使用注解方式定义Sql,编译时根据Sql生成函数主体代码
调用
```java
UserWrapper userWrapper test = DataRunnerUtil.getWrapper(UserWrapper.class);
System.out.println(userWrapper.getUserByBalance(1200));
// 增
userWrapper.register("admins", "123");
// 删
userWrapper.deleteUserById(25);
// 改
userWrapper.updateQQById("321", 10);
// 查
User user = userWrapper.login("admin", "21232f297a57a5a743894a0e4a801fc3");
if(user!=null) System.out.println(user.getId());
ArrayList users = userWrapper.getUsers();
```
###### 异常抛出
需要在调用时对 `SQLException` 异常进行处理
### 五、开发计划
- 单列查询时,直接返回对应的 `List`
- 如果函数不需要处理 SQLException, 直接由程序进行生成相应的 `try` `catch` 结构。