Skip to content

Commit

Permalink
Version 2.0.0
Browse files Browse the repository at this point in the history
Implemented Builders
Added Multiple Requests (requested by @MayusYT)
  • Loading branch information
Tallerik committed Jul 19, 2019
1 parent 6305e33 commit 91160db
Show file tree
Hide file tree
Showing 9 changed files with 351 additions and 28 deletions.
47 changes: 38 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[![](https://jitpack.io/v/Tallerik/MySQL-API.svg)](https://jitpack.io/#Tallerik/MySQL-API)
# MySQL-API
Simple Java API for MySQL

Expand All @@ -16,7 +17,7 @@ Simple Java API for MySQL
<dependency>
<groupId>com.github.Tallerik</groupId>
<artifactId>MySQL-API</artifactId>
<version>0ae2e72c</version>
<version>2.0.0</version>
</dependency>
</dependencies>
```
Expand All @@ -30,7 +31,7 @@ allprojects {
}
dependencies {
implementation 'com.github.Tallerik:MySQL-API:0ae2e72c'
implementation 'com.github.Tallerik:MySQL-API:2.0.0'
}
```

Expand Down Expand Up @@ -65,20 +66,48 @@ boolean: isDebug();
```

### MySQL Data interaction
**Default way**
```Java
boolean: sql.tableInsert("myTable", "name, age", "Robert", "32"); // INSERT Statement
boolean: sql.rowUpdate("myTable", new UpdateValue("age", "45"), "name = 'Robert'"); // UPDATE Statement
CachedRowSetImpl: sql.rowSelect("myTable", "*", "name = 'Robert'"); // SELECT Statement
Result: sql.rowSelect("myTable", "*", "name = 'Robert'"); // SELECT Statement
boolean: sql.custom("DELETE * FROM myTable;"); // Custom SQL Statement
```
**Tip**
`CachedRowSetImpl` is like ResultSet

**Request builder**
```java
// sql.tableInsert();
Insert ins = new Insert();
ins.setTable("myTable");
ins.setColumns("column1, column2");
ins.setData("value1", "value2");
boolean: sql.tableInsert(ins); // Multiple Builders accepted (sql.tableInsert(ins, ins2, ins3)


// sql.rowUpdate();
Update up = new Update();
up.setTable("myTable");
up.setValue(new UpdateValue("column1", "value3"));
up.setFilter("column2 = 'value2'");
boolean: sql.rowUpdate(up); // Multiple Builders accepted (sql.rowUpdate(up, up2, up3)


// sql.rowSelect();
Select select = new Select();
select.setTable("myTable");
select.setColumns("*"); // Optional default '*'
select.setFilter(""); // Optional default ''
Result: sql.rowSelect(select); // Only one Builder accepted!
```


#### Result

```Java
CachedRowSetImpl res = sql.rowSelect(...);
while(res.next()) {
System.out.PrintLn(res.getString("myValue"));
List<Row> rowList = res.getRows();
for(Row r : rowList) {
System.out.println(r.get("column1") + " " + r.get("column2"));
}

```

### Close Connection
Expand Down
14 changes: 14 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,21 @@
<groupId>de.tallerik</groupId>
<artifactId>mysql-api</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

</plugins>
</build>
<dependencies>
<dependency>
<groupId>mysql</groupId>
Expand Down
159 changes: 143 additions & 16 deletions src/main/java/de/tallerik/MySQL.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package de.tallerik;

import com.mysql.cj.jdbc.MysqlDataSource;
import com.sun.rowset.CachedRowSetImpl;
import de.tallerik.utils.*;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;

@SuppressWarnings("Duplicates")
@SuppressWarnings("Duplicates unused")
public class MySQL {

// Vars
Expand Down Expand Up @@ -66,14 +63,14 @@ public boolean connect() {
dataSource.setDatabaseName(db);
dataSource.setUser(user);
dataSource.setPassword(password);

dataSource.setAllowMultiQueries(true);
con = dataSource.getConnection();
System.out.println("Connection established");
return true;
}
catch(SQLException ex)
{
System.out.println(ex);
ex.printStackTrace();
return false;
}
}
Expand Down Expand Up @@ -133,6 +130,43 @@ public boolean tableInsert(String table, String columns, String... data) {
}
return false;
}
public boolean tableInsert(Insert... builders) {
String sql = "";
for (Insert b : builders) {
String sqldata = "";
int i = 0;
for (String d : b.getData()) {
sqldata = sqldata + "'" + d + "'";
i++;
if(i != b.getData().length) {
sqldata = sqldata + ", ";
}
}


sql = sql + "INSERT INTO " + b.getTable() + " (" + b.getColumns() + ") VALUES (" + sqldata + "); ";

}
Statement stmt = null;
try {
stmt = con.createStatement();
stmt.execute(sql);

} catch (SQLException e) {
e.printStackTrace();
} finally {
if(stmt != null) {
try {
stmt.close();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return false;
}

public boolean rowUpdate(String table, UpdateValue value, String filter) {
String change = "";
int i = 0;
Expand Down Expand Up @@ -162,7 +196,40 @@ public boolean rowUpdate(String table, UpdateValue value, String filter) {
}
return false;
}
public CachedRowSetImpl rowSelect(String table, String columns, String filter) {
public boolean rowUpdate(Update... builders) {
String sql = "";
for (Update u : builders) {
String change = "";
int i = 0;
for(String key : u.getValue().getKeys()) {
change = change + key + " = '" + u.getValue().get(key) + "'";
i++;
if(i != u.getValue().getKeys().size()) {
change = change + ", ";
}
}
sql = sql + "UPDATE " + u.getTable() + " SET " + change + " WHERE " + u.getFilter() + "; ";
}
Statement stmt = null;
try {
stmt = con.createStatement();
stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (stmt != null) {
try {
stmt.close();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return false;
}

public Result rowSelect(String table, String columns, String filter) {
if(columns == null || columns.equals("")) {
columns = "*";
}
Expand All @@ -172,21 +239,81 @@ public CachedRowSetImpl rowSelect(String table, String columns, String filter) {
}
sql = sql + ";";

Statement stmt = null;
ResultSet res = null;
Statement stmt;
ResultSet res;
try {
stmt = con.createStatement();
res = stmt.executeQuery(sql);
CachedRowSetImpl crs = new CachedRowSetImpl();
crs.populate(res);
stmt.close();
return crs;
ResultSetMetaData resmeta = res.getMetaData();
Result result = new Result();
while(res.next()) {
Row row = new Row();
int i = 1;
boolean bound = true;
while (bound) {
try {
row.addcolumn(resmeta.getColumnName(i), res.getObject(i));
} catch (SQLException e) {
bound = false;
}

i++;
}
result.addrow(row);
}
return result;

} catch (SQLException e) {
e.printStackTrace();
return new Result();
}
return null;
}
public Result rowSelect(Select s) {
String sql = "";
String columns;
String lsql;
if(s.getColumns() == null || s.getColumns().equals("")) {
columns = "*";
} else {
columns = s.getColumns();
}
lsql = "# noinspection SqlResolveForFile
SELECT " + columns + " FROM " + s.getTable();
if(s.getFilter() != null && !s.getFilter().equals("")) {
lsql = lsql + " WHERE " + s.getFilter();
}
lsql = lsql + "; ";
sql = sql + lsql;

Statement stmt;
ResultSet res;
try {
stmt = con.createStatement();
res = stmt.executeQuery(sql);
ResultSetMetaData resmeta = res.getMetaData();
Result result = new Result();
while(res.next()) {
Row row = new Row();
int i = 1;
boolean bound = true;
while (bound) {
try {
row.addcolumn(resmeta.getColumnName(i), res.getObject(i));
} catch (SQLException e) {
bound = false;
}
i++;
}
result.addrow(row);
}
return result;
} catch (SQLException e) {
e.printStackTrace();
return new Result();
}
}

public boolean custom(String sql) {
Statement stmt = null;
try {
Expand Down
38 changes: 38 additions & 0 deletions src/main/java/de/tallerik/utils/Insert.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package de.tallerik.utils;

import java.util.List;


@SuppressWarnings("Duplicates unused")
public class Insert {
private String table = "";
private String columns = "";
private String[] data = null;
public Insert(String table, String columns, String... data) {
this.table = table;
this.columns = columns;
this.data = data;
}
public Insert() {}
public void setColumns(String columns) {
this.columns = columns;
}
public void setData(String... data) {
this.data = data;
}
public void setData(List<String> data) {
this.data = (String[]) data.toArray();
}
public void setTable(String table) {
this.table = table;
}
public String getColumns() {
return columns;
}
public String getTable() {
return table;
}
public String[] getData() {
return data;
}
}
18 changes: 18 additions & 0 deletions src/main/java/de/tallerik/utils/Result.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package de.tallerik.utils;

import java.util.ArrayList;
import java.util.List;


@SuppressWarnings("Duplicates unused")
public class Result {
private List<Row> rows = new ArrayList<>();
public Result(){}
public void addrow(Row row) {
rows.add(row);
}

public List<Row> getRows() {
return rows;
}
}
24 changes: 24 additions & 0 deletions src/main/java/de/tallerik/utils/Row.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package de.tallerik.utils;

import java.util.HashMap;
import java.util.Set;


@SuppressWarnings("Duplicates unused")
public class Row {
private HashMap<String, Object> content = new HashMap<>();
public Row(){}
public void addcolumn(String name, Object content) {
this.content.put(name, content);
}

public HashMap<String, Object> getColumns() {
return content;
}
public Object get(String key) {
return content.get(key);
}
public Set<String> getKeys() {
return content.keySet();
}
}
Loading

0 comments on commit 91160db

Please sign in to comment.