歡迎您光臨本站 註冊首頁

Topfox 快速開發框架更新了版本 1.2.4 與 1.2.5

←手機掃碼閱讀     admin @ 2019-08-02 , reply:0

版本1.2.5 更新日誌 2019-07-30

  • CamelHelper為駝峰和下劃線命名互轉的處理類
    BeanUtil.toUnderlineName 刪除, 用 CamelHelper.toUnderlineName 代替
    BeanUtil.toCamelCase 刪除, 用 CamelHelper.toCamel 代替

版本1.2.4 更新日誌 2019-07-24

  • 全局緩存參數開關

    新增 一級緩存開關 top.service.thread-cache

    新增 二級緩存開關 top.service.redis-cache

    刪除 top.service.open-redis

  • 多主鍵的支持, 包括: 更新, 刪除, 查詢, 數據校驗組件, 修改日誌組件;
  • java遠程調用返回空對象的處理;
  • 技術文檔修改

在 srpingboot2.x.x 和MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。

編程規範參考《阿里巴巴Java開發手冊》

借鑒 mybaties plus 部分思想

特性:

  • 無侵入:只做增強不做改變,引入它不會對現有工程產生影響
  • 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作
  • 集成Redis緩存: 自帶Redis緩存功能, 支持多主鍵模式, 自定義redis-key. 實現對資料庫的所有操作, 自動更新到Redis, 而不需要你自己寫任何代碼; 當然也可以針對某個表關閉.
  • 強大的 CRUD 操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求
  • 支持 Lambda 形式調用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心欄位寫錯
  • 支持主鍵自動生成:可自由配置,充分利用Redis提高性能, 完美解決主鍵問題. 支持多主鍵查詢、修改等
  • 內置分頁實現:基於 MyBatis 物理分頁,開發者無需關心具體操作,寫分頁等同於普通查詢
  • 支持devtools/jrebel熱部署
  • 熱載入 支持在不使用devtools/jrebel的情況下, 熱載入 mybatis的mapper文件
  • 內置全局、局部攔截插件:提供delete、update 自定義攔截功能
  • 擁有預防Sql注入攻擊功能
  • 無縫支持spring cloud: 後續提供分散式調用的例子

功能強大的查詢

條件匹配器Condition 查詢一

以下僅僅是條件匹配器的部分功能, 更多功能等待用戶挖掘.


@RestController
@RequestMapping("/condition")
public class ConditionController {
    @Autowired
    UserService userService;

    /**
     * 條件匹配器的一個例子
     */
    @GetMapping("/query1")
    public List<UserDTO> query1(){
        //**查詢 返回對象 */
        List<UserDTO> listUsers = userService.listObjects(
                Condition.create()  //創建條件匹配器對象
                    .between("age",10,20)  //生成 age BETWEEN 10 AND 20
                    .eq("sex","男")        //生成  AND(sex = '男')
                    .eq("name","C","D","E")//生成 AND(name = 'C'  OR name = 'D' OR name = 'E')
                    .like("name","A", "B") //生成 AND(name LIKE '%A%' OR name LIKE '%B%')
                    //不等
                    .ne("name","張三","李四")
                    
                     //等同於  .eq("substring(name,2)","平")
                    .add("substring(name,2)='平' ")//自定義條件
                    
                    .le("loginCount",1)//小於等於
                    .lt("loginCount",2)//小於
                    .ge("loginCount",4)//大於等於
                    .gt("loginCount",3)//大於

                    .isNull("name")
                    .isNotNull("name")
        );
        return listUsers;
    }

}

生成的WHERE條件如下:


SELECT id,code,name,password,sex,age,amount,mobile,isAdmin,loginCount,lastDate,deptId,createUser,updateUser
FROM users a
WHERE age BETWEEN 10 AND 20
  AND (sex = '男')
  AND (name = 'C' OR name = 'D' OR name = 'E')
  AND (name LIKE '%A%' OR name LIKE '%B%')
  AND (name <> '張三' AND name <> '李四')
  AND substring(name,2)='平' 
  AND (loginCount <= 1)
  AND (loginCount < 2)
  AND (loginCount >= 4)
  AND (loginCount > 3)
  AND name is null
  AND name is not null
LIMIT 0,6666

條件匹配器Condition 查詢二


@RestController
@RequestMapping("/condition")
public class ConditionController {
    @Autowired
    UserService userService;
    @GetMapping("/query2")
    public List<UserDTO> query2(){
        //**查詢 返回對象 */
        List<UserDTO> listUsers = userService.listObjects(
            userService.where()  // 等同於 Condition.create() 創建一個條件匹配器對象
                .eq("concat(name,id)","A1")          //生成 (concat(name,id) = 'A1')
                .eq("concat(name,id)","C1","D2","E3")//生成 AND (concat(name,id) = 'C1' OR concat(name,id) = 'D2' OR concat(name,id) = 'E3' )
        );
        return listUsers;
    }
}

生成的WHERE條件如下:


SELECT id,code,name,password,sex,age,amount,mobile,isAdmin,loginCount,lastDate,deptId,createUser,updateUser
FROM users a
WHERE (concat(name,id) = 'A1')
  AND (concat(name,id) = 'C1'
    OR concat(name,id) = 'D2'
    OR concat(name,id) = 'E3' )

高級查詢 帶分組, 排序, 自定select 后欄位, 指定分頁的查詢

利用查詢構造器 EntitySelect 和 Condition的查詢

實體查詢構造器


/**
 * 核心使用 繼承了 topfox 的SimpleService
 */
@Service
public class CoreService extends SimpleService<UserDao, UserDTO> {
    public List<UserDTO> demo2(){
        List<UserDTO> listUsers=listObjects(
                select("name, count('*')") //通過調用SimpleService.select() 獲得或創建一個新的 EntitySelect 對象,並返回它
                        .where()         //等同於 Condition.create()
                        .eq("sex","男")  //條件匹配器自定義條件 返回對象 Condition
                        .endWhere()      //條件結束           返回對象 EntitySelect
                        .orderBy("name") //設置排序的欄位      返回對象 EntitySelect
                        .groupBy("name") //設置分組的欄位      返回對象 EntitySelect
                        .setPage(10,5)    //設置分頁(查詢第10頁, 每頁返回5條記錄)

        );
        return listUsers;
    }
}

輸出sql如下:


SELECT name, count('*')
FROM users a
WHERE (sex = '男')
GROUP BY name
ORDER BY  name
LIMIT 45,5

 


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/108732/topfox-1-2-4-n-1-2-5-released
Topfox 快速開發框架更新了版本 1.2.4 與 1.2.5已經有279次圍觀

http://coctec.com/news/all/show-post-211427.html