手寫Mybatis SQL註解

2021-10-09 02:52:56 字數 2223 閱讀 5999

資料庫中有user表

查詢

動態** invoke

public object invoke(object proxy, method method, object args) throws throwable 

bxcselect select = method.getdeclaredannotation(bxcselect.class);

if (select != null)

return null;

}

新增資料

private object insert(bxcinsert extinsert, object proxy, method method, object args) 中的字串

string sqlinsertparameter = sqlutils.sqlinsertparameter(sql);

//依據上面的陣列的順序取map容器中取到真實資料,防止引數順序與sql中引數順序不一致的情況下

listsqlparams = sqlparams(sqlinsertparameter, paramsmap);

//將#{}換成?

string newsql = sqlutils.paramequestion(sql, sqlinsertparameter);

//指向sql語句

return jdbcutils.insert(newsql, false, sqlparams);

}

取出方法中的引數,使用@bxcparam的value作為key,使用者傳遞的內容為value

private concurrenthashmapparamsmap(object proxy, method method, object args) 

}return paramsmap;

}

select

private object select(bxcselect select, object proxy, method method, object args) throws sqlexception, illegalacces***ception, instantiationexception 中的字串

listsqlselectparameter = sqlutils.sqlselectparameter(sql);

//依據上面的陣列的順序取map容器中取到真實資料

listsqlparams = new arraylist<>();

for (string parametername : sqlselectparameter)

// 將#{}換成?

string newsql = sqlutils.paramequestion(sql, sqlselectparameter);

//執行sql語句,並拿到resultset物件

resultset res = jdbcutils.query(newsql, sqlparams);

//判斷是否有值

if (!res.next())

//上面判斷會游標會向下走乙個,返還回去

res.previous();

//拿到方法返回的class>

class> returntype = method.getreturntype();

//例項化對像

object object = returntype.newinstance();

while (res.next())

}return object;

}

sqlsession

public class sqlsession ,

new invocationhandleraop(classz));

}}

測試

public class userservice 

}

手寫Spring事物註解

在spring中使用 transactional註解屬於聲名式事物,但我們要自己實現此類功能,就需要對程式設計試事物進行封裝。首先在資料庫新建了個user空表 在程式中新增兩條資料,在中間丟擲1 0的錯誤 執行後,檢視資料庫內容,已經插入了一條內容 加上自定義的事物註解 再次執行,檢視資料庫內容,已...

MyBatis SQL注入

使用mybatis的程式或系統,只要使用 傳遞的引數,就不會存在sql注入漏洞,因為它使用的是和jdbc的preparestatemnt物件,使用的預編譯傳遞引數,將轉義交給了資料庫,不會出現sql注入的問題。但如果使用不當,例如使用 來傳遞拼接引數就會有sql注入的問題。正確的用法 1 正確使用 ...

mybatis SQL注入

sql注入,大家都不陌生,是一種常見的攻擊方式。攻擊者在介面的表單資訊或url上輸入一些奇怪的sql片段 例如 or 1 1 這樣的語句 有可能入侵引數檢驗不足的應用程式。所以,在我們的應用中需要做一些工作,來防備這樣的攻擊方式。在一些安全性要求很高的應用中 比如銀行軟體 經常使用將sql語句全部替...