一、FluentMybatis 查詢
FluentMybatis 是一個支持類型安全的 Mybatis 封裝,使得代碼更易讀、易寫、易維護。它提供了豐富的查詢 API,支持動態條件、自定義返回類型、多表聯合查詢等功能。
以下代碼展示了如何使用 FluentMybatis 查詢一個用戶對象:
<!-- 定義 XML 映射文件 --> <mapper namespace="com.example.mapper.UserMapper"> <resultMap id="userMap" type="com.example.entity.User"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> </resultMap> <select id="getById" resultMap="userMap"> SELECT * FROM user WHERE id = #{id} </select> </mapper> // 使用 FluentMybatis 查詢 User user = new FluentMybatis() .select(User::getId, User::getName, User::getAge) // 自定義返回類型 .from(User.class) .where(User::getId).eq(1L) // 動態條件 .single(); // 返回單個對象
可以看到,FluentMybatis 的查詢代碼比 Mybatis 原生的 XML 配置 + Java 代碼實現要簡潔得多。
二、FluentMybatis 和 MybatisPlus 優劣
FluentMybatis 和 MybatisPlus 都是對 Mybatis 進行了封裝,它們的目的都是為了讓開發更快、更方便、更高效。那麼它們之間有什麼優劣呢?下面進行簡單的對比:
2.1 MybatisPlus 的優勢
MybatisPlus 是一個更加成熟的 ORM 框架,它擁有更完整的功能,如分頁、邏輯刪除、多租戶等,並且它在國內的影響力較大,獲得更多的社區支持。
以下代碼展示了如何使用 MybatisPlus 查詢一個用戶對象:
// 使用 MybatisPlus 查詢 User user = userRepository.selectOne(new QueryWrapper<User>() .eq("id", 1L)); // 動態條件
2.2 FluentMybatis 的優勢
FluentMybatis 的 API 更具可讀性和可維護性,代碼更加優雅,並且支持一些高級功能,如複雜的多表聯查、自定義返回類型等。
以下代碼展示了如何使用 FluentMybatis 查詢一個用戶對象:
// 使用 FluentMybatis 查詢 User user = new FluentMybatis() .select(User::getId, User::getName, User::getAge) // 自定義返回類型 .from(User.class) .where(User::getId).eq(1L) // 動態條件 .single(); // 返回單個對象
三、FluentMybatis 優缺點
FluentMybatis 的優點已經在前面提到了,比如 API 可讀性高、代碼優雅、支持多表聯查等。不過它也存在一些缺點,比如:
3.1 學習成本稍高
雖然 FluentMybatis 的 API 更加易讀易寫,但是它的學習成本相對較高。如果團隊中沒有人使用過 FluentMybatis,那麼需要花費一定的時間來學習和掌握。
3.2 功能相對較少
相對於 MybatisPlus 來說,FluentMybatis 的功能比較簡單,不支持分頁、邏輯刪除等高級功能。如果項目需要使用這些功能,那麼需要手動實現。
四、FluentMybatis 成熟嗎
FluentMybatis 是一個比較新的項目,目前已經發布了數個版本。雖然它功能相對較少,但是它的代碼質量較高,參與貢獻的人員也比較活躍,因此它的穩定性和可靠性值得信賴。
五、FluentMybatis 動態資料庫連接
FluentMybatis 支持根據請求動態切換資料庫連接。下面是一個簡單的例子:
// 定義數據源 HikariDataSource ds1 = new HikariDataSource(); ds1.setJdbcUrl("jdbc:mysql://localhost:3306/test"); ds1.setUsername("root"); ds1.setPassword(""); HikariDataSource ds2 = new HikariDataSource(); ds2.setJdbcUrl("jdbc:mysql://localhost:3306/test2"); ds2.setUsername("root"); ds2.setPassword(""); // 動態切換數據源 FluentMybatis fm = new FluentMybatis(); fm.use(ds1); // 切換至 ds1 User user1 = fm.select(User::getId, User::getName, User::getAge) .from(User.class) .where(User::getId).eq(1L) .single(); fm.use(ds2); // 切換至 ds2 User user2 = fm.select(User::getId, User::getName, User::getAge) .from(User.class) .where(User::getId).eq(1L) .single();
六、FluentMybatis 阿里的嗎
FluentMybatis 是一個開源的項目,不屬於阿里的,但是它是基於阿里的開源項目開發的(比如:FastJSON、Druid 等),因此它具有阿里開源項目的思想和特點。
七、FluentMybatis 如何多表查詢
FluentMybatis 支持多表聯查,下面是一個簡單的例子:
// 查詢用戶及其對應的訂單列表 List<UserWithOrders> userList = new FluentMybatis() .select(User::getId, User::getName, User::getAge, Order::getId, Order::getPrice) .from(User.class) .leftJoin(Order.class).on(User::getId).eq(Order::getUserId) .where(User::getId).eq(1L) .toQuery() .list(UserWithOrders.class);
可以看到,使用 FluentMybatis 查詢多表是非常簡單的,只需要使用 join/leftJoin 等函數即可。同時,FluentMybatis 也支持自定義返回類型,可以方便地將結果映射為複雜的實體對象。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286985.html