mybitys 动态sql 注释_mybatis注解动态sql详解
關(guān)于mybatis已經(jīng)給大家講過很多次了,下面要接著給大家介紹mybatis注解動態(tài)sql的內(nèi)容,一起來了解一下mybatis注解開發(fā)之三種動態(tài)sql吧。
1、腳本sql
對于XML配置方式的動態(tài)SQL這里的話就不怎么講了,下面的內(nèi)容是用
的方式將他照搬過來,用注解來實現(xiàn)。
這個比較適用于xml配置轉(zhuǎn)換到注解配置。
其實,可以很明顯的看出,在java當(dāng)中寫xml可讀性和維護性真的是比較的差的,尤其是在SQL非常長的時候,超級的麻煩。
2、在方法中構(gòu)建sql
這里的話,我們借用內(nèi)部類來生成動態(tài)SQL。
增改刪有對應(yīng)的@InsertProvider、@UpdateProvider、@DeleteProvider。
這樣的話會更加的清晰一些,它比較的適合用于查詢語句不是特別的長,條件不多的場景。
但是,在寫非常長的SQL的時候,這樣的方式也是會比較的麻煩,寫到不想寫了。@Mapper
public?interface?MybatisDao
{
//使用UserDaoProvider類的findUserById方法來生成sql
@SelectProvider(type?=?UserDaoProvider.class,?method?=?"findUserById")
public?List??findUserById(User?user);
class?UserDaoProvider
{
public?String?findUserById(User?user)
{
String?sql?=?"SELECT?*?FROM?user";
if?(user.getId()?!=?null)
{
sql?+=?"?where?id?=?#{id}";
}
return?sql;
}
}
3、結(jié)構(gòu)化SQL
這里的話,將前面的內(nèi)部類進行了一下改造。public?String?findUserById(User?user)
{
return?new?SQL()
{
{
SELECT("id,name");
SELECT("other");
FROM("user");
if?(user.getId()?!=?null)
{
WHERE("id?=?#{id}");
}
if?(user.getName()?!=?null)
{
WHERE("name?=?#{name}");
}
//從這個toString可以看出,其內(nèi)部使用高效的StringBuilder實現(xiàn)SQL拼接
}
}.toString();
}
上面的一些例子都只是一些很基礎(chǔ)的用法介紹,假如你還想了解更多的用法,請繼續(xù)關(guān)注奇Q工具網(wǎng)的常見問題欄目來進行了解吧。
推薦閱讀:
總結(jié)
以上是生活随笔為你收集整理的mybitys 动态sql 注释_mybatis注解动态sql详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue切换路由页面数据缓存_Vue-Ro
- 下一篇: shiro注销其他用户_Shiro实现互