権限管理システムにおけるプロジェクト構造の構築とログ、MyBatis、ページネーションの統合

プロジェクト構造の構築

本記事では、LayUIを用いたリストページと編集ページの表示インタフェースを実装した前回の内容をベースに、固定データではなくデータベースからリストデータを取得する方法について説明します。

1. プロジェクト構造

プロジェクト構造は拡張性と可読性を考慮して設計します。下記は主なパッケージ構成です。

  • com.example:メインクラス
  • com.example.config:設定クラス(例:Druidデータソース設定)
  • com.example.controller:コントローラークラス
  • com.example.dao:データベース操作インタフェース
  • com.example.entity:エンティティクラス
  • com.example.pojo:データベーステーブルと対応するPOJOクラス
  • com.example.service:サービスインタフェース
  • com.example.service.impl:サービス実装クラス
  • com.example.utils:ユーティリティクラス

ログの統合

Spring Boot標準のログライブラリを除外し、Log4j2を使用します。


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

Log4j2の設定はlog4j2.xmlファイルで行い、ログ出力先を指定します。

MyBatisの統合

MyBatisの依存を追加し、データベース接続情報をapplication.propertiesに設定します。


<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

application.propertiesの設定:


spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

PageHelperの統合

PageHelperを用いたページネーションを実装します。


<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>3.4.2</version>
</dependency>

mybatis-config.xmlにPageHelperのプラグイン設定を追加:


<plugins>
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <property name="dialect" value="mysql"/>
        <property name="rowBoundsWithCount" value="true"/>
    </plugin>
</plugins>

データベースのページネーション処理

12件のサンプルデータを準備し、PageHelperを用いてページネーションを実装します。


public class PageDataResult {
    private Integer totals;
    private List list;
    private Integer code = 200;
    private String msg = "";
    
    // getter/setter
}

サービス層でのページネーション処理:


@Override
public PageDataResult getUsers(UserSearchDTO userSearch) {
    PageDataResult result = new PageDataResult();
    PageHelper.startPage(userSearch.getPage(), userSearch.getLimit(), true);
    List<User> userList = userMapper.getUsers(userSearch);
    PageInfo<User> pageInfo = new PageInfo<>(userList);
    result.setTotals(pageInfo.getTotal());
    result.setList(userList);
    return result;
}

フロントエンドの更新

固定データをデータベースから取得したデータに置き換え、LayUIのテーブル表示を更新します。


table.render({
    elem: '#user',
    url: '/user/getUsers',
    page: true,
    response: {
        countName: 'totals',
        dataName: 'list'
    },
    cols: [[
        {field: 'name', title: '名前'},
        {field: 'age', title: '年齢'},
        {field: 'sex', title: '性別', templet: function(d) {
            return d.sex === 1 ? '男' : '女';
        }}
    ]]
});

まとめ

Javaのプロジェクト構造を構築し、ログ、MyBatis、PageHelperを統合し、動的なページネーション表示を実現しました。今後は追加・編集・削除機能の実装と、トランザクション管理の導入を予定しています。

タグ: SpringBoot MyBatis PageHelper log4j2 Layui

6月20日 00:36 投稿