深入探究minidao框架

隨着技術的不斷進步,JavaWeb 開發已經成為了一種熱門的技術趨勢。在 JavaWeb 開發中,訪問數據庫是一項必不可少的工作。minidao 是一款輕量級的 ORM 框架,它可以幫助我們更加方便地完成數據庫的操作。下面將對 minidao 框架進行深入探究。

1、minidao 簡介

minidao 是基於 Spring 微內核的 ORM 框架,主要使用了兩種設計模式——Spring BeanFactory 設計模式和後處理器模式。它提供了一種方便、簡單的方式訪問數據庫,也是一個輕量的 ORM 框架。

minidao 提供了多種數據庫支持,目前支持的數據庫包括Mysql、Postgresql、Oracle、SqlServer等。同時,它還提供了非常實用的註解工具類,可以在編譯期完成 SQL 語句的拼裝,並且支持多種分頁方式。

1.1 minidao 特點

1)、簡單易用,只需要在 POJO 中添加註解就可以完成 CRUD 操作。

2)、在 DAO 接口中使用註解方式完成 SQL 語句拼裝。

3)、參數綁定和結果集映射實現了降低數據庫訪問的開銷。

4)、支持多重數據源訪問。

5)、支持多種分頁方式,如 Oracle、Mysql、Postgresql 等分頁方式。

6)、支持 SpringBoot 快速集成。

1.2 minidao 使用限制

1)、兼容性:最低兼容 Java1.7 以上。

2)、minidao 不支持存儲過程、函數、觸發器等操作,也不支持將一個邏輯操作分解為若干子操作後再進行執行。

2、minidao 使用示例

2.1 添加 minidao 依賴

在 pom.xml 文件中添加以下依賴:

<dependency>
    <groupId>com.github.drinkjava2</groupId>
    <artifactId>mini-dao</artifactId>
    <version>3.0.0</version>
</dependency>

2.2 配置數據源

在 Spring 配置文件中,配置數據源並引入 minidao:

<!-- 定義數據源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/test" />
    <property name="username" value="root" />
    <property name="password" value="123456" />
</bean>

<!-- 配置 minidao -->
<bean id="miniDao" class="org.nutz.dao.impl.NutDao">
    <constructor-arg ref="dataSource" />
</bean>

2.3 編寫 DAO 層代碼

在 DAO 接口中使用相關註解,進行 SQL 語句的拼裝工作。

public interface UserDao {

    // 添加用戶
    @Sql("insert into user(username,password) values(@user.username,@user.password)")
    @Transcation
    void addUser(@Param("user") User user);

    // 刪除用戶
    @Sql("delete from user where id=@id")
    @Transcation
    void deleteUser(@Param("id") int id);

    // 查詢所有用戶
    @Sql("select * from user")
    List<User> findAll();

    // 根據 ID 查詢用戶
    @Sql("select * from user where id=@id")
    User findById(@Param("id") int id);

    // 更新用戶
    @Sql("update user set username=@user.username,password=@user.password where id=@user.id")
    @Transcation
    void updateUser(@Param("user") User user);
}

2.4 編寫 Service 層代碼

在 Service 層中進行事務管理:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public void addUser(User user) {
        userDao.addUser(user);
    }

    @Override
    public void deleteUser(int id) {
        userDao.deleteUser(id);
    }

    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }

    @Override
    public User findById(int id) {
        return userDao.findById(id);
    }

    @Override
    public void updateUser(User user) {
        userDao.updateUser(user);
    }

}

2.5 配置 Mybatis 分頁插件

minidao 使用 Mybatis 分頁插件進行分頁,首先需要在 pom.xml 文件中添加插件依賴:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>

然後在 Spring 配置文件中添加 Mybatis 配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath*:mapper/*.xml" />
    <!-- 添加 Mybatis 分頁插件配置 -->
    <property name="plugins">
        <array>
            <bean class="com.github.pagehelper.PageInterceptor">
                <property name="properties">
                    <props>
                        <!-- 數據庫方言 -->
                        <prop key="helperDialect">mysql</prop>
                        <!-- 分頁合理化參數驗證,默認為 true。如果設置為 true,pageNum<1 時會查詢第一頁,pageNum>pages(超過總數時),會查詢最後一頁。如果設置為 false,直接根據參數進行查詢。 -->
                        <prop key="reasonable">true</prop>
                        <!-- 支持通過 Mapper 接口參數來傳遞分頁參數 -->
                        <prop key="supportMethodsArguments">true</prop>
                        <!-- 默認通過 ThreadLocal 存儲方法調用的分頁參數,可以配置為每次調用時都傳遞參數。PageHelper.startPage(int pageNum,int pageSize,boolean count) 方法中的 count 參數即為配置的參數,true 時則會進行 count(1) 操作,消耗不少性能。 -->
                        <prop key="rowBoundsWithCount">true</prop>
                    </props>
                </property>
            </bean>
        </array>
    </property>
</bean>

2.6 使用分頁插件進行分頁

在 DAO 層代碼中,使用 minidao 提供的 Pager 類進行分頁操作。

public interface UserDao {

    // 分頁查詢所有用戶
    @Sql("select * from user")
    List<User> findAll(Pager pager);

}

在 Service 層代碼中,調用 DAO 層方法進行分頁查詢操作。

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public List<User> findAll(int pageNum, int pageSize) {
        Pager pager = Pager.create(pageNum, pageSize);
        return userDao.findAll(pager);
    }
}

3、總結

本文對 minidao 框架進行了深入的探究,介紹了其主要特點和使用方法。minidao 是一個非常方便、實用的 ORM 框架,可以幫助開發者們更加便捷地完成數據庫操作。相信掌握了 minidao 的使用方法後,開發效率會得到很大的提升。

原創文章,作者:WQED,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/136614.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WQED的頭像WQED
上一篇 2024-10-04 00:16
下一篇 2024-10-04 00:16

相關推薦

  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Zlios——一個多功能的開發框架

    你是否在開發過程中常常遇到同樣的問題,需要不斷去尋找解決方案?你是否想要一個多功能、易於使用的開發框架來解決這些問題?那麼,Zlios就是你需要的框架。 一、簡介 Zlios是一個…

    編程 2025-04-29
  • agavi開發框架

    Agavi是一個基於MVC模式的Web應用程序開發框架,以REST和面向資源的設計為核心思想。本文章將從Agavi的概念、優點、使用方法和實例等方面進行詳細介紹。 一、概念 Aga…

    編程 2025-04-29
  • Python unittest框架用法介紹

    Python unittest框架是Python自帶的一種測試框架,可以用來編寫並運行測試用例。在本文中,我們將從以下幾個方面詳細介紹Python unittest框架的使用方法和…

    編程 2025-04-29
  • com.alipay.sofa.bolt框架

    com.alipay.sofa.bolt框架是一款高性能、輕量級、可擴展的RPC框架。其廣泛被應用於阿里集團內部服務以及阿里雲上的服務。該框架通過NIO支持高並發,同時還內置了多種…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • LuaEP:一款強大的Lua開發框架

    LuaEP是一個集成了可以快速開發web應用程序所需的組件的Lua開發框架。它以Lua語言為基礎,提供了許多常用接口和庫,使得開發者不需要從頭開始編寫web應用程序,而是專註於業務…

    編程 2025-04-28
  • Java持久層框架的複合主鍵實現

    用Java持久層框架來操作數據庫時,複合主鍵是常見的需求。這篇文章將詳細闡述javax.persistence複合主鍵的實現方式,並提供完整的示例代碼。 一、複合主鍵的定義 複合主…

    編程 2025-04-27
  • AMTVV:一個全能的開發框架

    AMTVV是一個面向現代Web應用程序的全能開發框架,它可以讓你的工作更加高效。AMTVV能夠處理各種各樣的技術棧,包括但不限於React、Angular、Vue和TypeScri…

    編程 2025-04-27
  • Python語言的MVC框架

    本文將從以下幾個方面詳細闡述Python語言的MVC框架: 一、MVC框架的基本概念 一般而言,MVC框架被分為Model,View,Controller三部分。Model代表數據…

    編程 2025-04-27

發表回復

登錄後才能評論