IDEA 2020 MyBatis環境の構築とエントリのケース(xmlモードと注釈モードの構成を使用)

MyBatisを使い始める

 

MyBatis環境構築

IDEAを使用してMyBatis環境を構築する

1. Mavenプロジェクトを作成し、依存関係を追加します

Mavenプロジェクトを作成する
pom.xmlに依存関係を追加します:(log4jは、実行されたsqlステートメントをコンソールに出力して簡単に観察できます)

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13-beta-3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.エンティティクラスとdaoの間にインターフェイスを作成します

パッケージ名に注意して、src / main / javaの下にcom.cjx.entityおよびcom.cjx.daoパッケージを作成します。

package com.cjx.entity;

import java.io.Serializable;
import java.util.Date;

/**
 * @author :
 * @date :Created in 2019/11/7 17:03
 * @description : user
 */
public class User implements Serializable {
    private int id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}
package com.cjx.dao;

import com.cjx.entity.User;

import java.util.List;

/**
 * @author :
 * @date :Created in 2019/11/7 17:07
 * @description : dao
 */
public interface IUserDao {

    /**
     * @author      :
     * @description :查询所有
     * @date        :Created in 2019/11/7
     */
    List<User> findAll();
}

3. MyBatisメイン構成ファイルを作成します:SqlMapConfig.xml

ここでは、事前にデータベースを準備する必要があります。ここではeesy_mybatisと呼ばれ、テーブルはuserと呼ばれ、設計は次のとおりです
ここに画像の説明を挿入
。データベースにデータを追加します。
リソースにファイルSqlMapConfig.xmlを作成します

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- MyBatis的主配置文件 -->
<configuration>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- 配置MySQL环境 -->
        <environment id="mysql">
            <!-- 配置事务类型 -->
            <transactionManager type="JDBC"/>
            <!-- 配置数据源/连接池 -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息  -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="1999"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 指定映射配置文件的位置 -->
    <mappers>
        <mapper resource="com/cjx/dao/IUserDao.xml"/>
    </mappers>
</configuration>

4.マッピング構成ファイルを作成します

リソースにcom.cjx.daoディレクトリを作成してから、ファイルIUserDao.xmlを作成します。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cjx.dao.IUserDao">
    <!-- 配置查询所有 -->
    <select id="findAll" resultType="com.cjx.entity.User">
        select * from user
    </select>
</mapper>

5.log4j構成ファイルを作成します

SqlMapConfigと同じレベルでlog4j.propertiesファイルを作成します

log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.R.File=../logs/service.log
#log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#log4j.logger.com.ibatis = debug
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = debug
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner = debug
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = debug
#log4j.logger.java.sql.Connection = debug
log4j.logger.java.sql.Statement = debug
log4j.logger.java.sql.PreparedStatement = debug
log4j.logger.java.sql.ResultSet =debug

環境設定に関する注意事項

  1. IUserDao.xmlおよびIUserDao.javaの名前は、以前の知識と一致するように作成されました。永続層の操作インターフェース名とマッピングファイルは、MyBatisではマッパーとも呼ばれます。したがって、他のプロジェクトではIUserMapperと呼ばれることがあり、その時点で理解する必要があります。
  2. アイデアでディレクトリを作成することは、パッケージと同じではありません。パッケージは次のように作成されcom.cjx.daoディレクトリの名前は、「com.cjx.dao」であり、3レベルの構造であり、レベル1ディレクトリであるディレクトリcom.cjx.dao、ディレクトリを作成する必要がありますスラッシュ、つまりcom / cjx / daoを使用して、3レベルのディレクトリを作成します。IDEA2019では、ディレクトリはデフォルトでcom.cjx.daoの形式に折りたたまれます。必要に応じてサービスディレクトリを作成するには、リソースディレクトリにあります。com/ cjx / serviceを作成します。通常どおり、作成できます。
    IDEA2019ディレクトリ構造

(この図は、com / cjx / daoの場合、IDEA2019もデフォルトでディレクトリをcom.cjx.daoの形式に折りたたむことを示しています)

  1. MyBatisのマッピング構成ファイルの場所はdaoインターフェースのパッケージ構造と同じである必要があり、パッケージはcom.cjx.daoにあり、xmlもリソースのcom / cjx / daoにある必要があります。
  2. マッピング構成ファイルのマッパータグの名前空間属性の値は、daoインターフェースの完全修飾クラス名である必要があります。
  3. マッピング構成ファイルの操作構成(selectなど)。クエリ操作には戻り値があるため、id属性の値はdaoインターフェースのメソッド名である必要があります。したがって、戻り結果のタイプである属性を指定する必要があります。はresultTypeであり、値は戻り値Classです。ここではuserです。

ポイント3、4、5に準拠すると、開発中にdao実装クラスを作成する必要がなくなり、残りの関数はMyBatisによって実装されます。
 

MyBatisエントリーケース

データベースクエリを実装するためのテスト関数を作成します

test / javaでパッケージcom.cjx.testを作成し、クラスMybatisTestを作成し、クラスにMain関数を作成します。主に次の手順があります。

  1. 構成ファイルの読み取り
  2. SqlSessionFactoryファクトリを作成します
  3. ファクトリを使用してSqlSessionオブジェクトを生成します
  4. SqlSessionを使用してdaoインターフェースのプロキシオブジェクトを作成します
  5. プロキシオブジェクトを使用してメソッドを実行する
  6. リソースを解放する

コードは次のように表示されます。

package com.cjx.test;

import com.cjx.dao.IUserDao;
import com.cjx.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

/**
 * @author :
 * @date :Created in 2019/11/8 10:12
 * @description : 入门案例
 */
public class MybatisTest {
    /**
     * @author      :
     * @description :入门案例
     * @param       : [args]
     * @return      : void
     * @date        :Created in 2019/11/8
     */
    public static void main(String[] args) throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产一个SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建dao接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for (User user :
                users) {
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

[実行]をクリックした後に発生する可能性のあるいくつかの問題

リリースバージョン5はサポートされていません

これは、MavenのデフォルトのJavaバージョンが1.5であり、ほとんどの人が新しいバージョンをインストールするためです。解決策は次のとおりです。

  1. [ファイル]-> [設定]-> [ビルド、実行、展開]-> [コンパイラ]-> [Javaコンパイラ]ターゲットバイトコードのバージョンを13設定します(私の場合は13、その他は1.8の場合があります)ここに画像の説明を挿入
  2. pom.xmlの<dependencies>と同じレベルで構成に追加します
    <properties>
       <java.version>13</java.version>
       <maven.compiler.source>13</maven.compiler.source>
       <maven.compiler.target>13</maven.compiler.target>
   </properties>
  1. [ファイル]-> [プロジェクト構造]-> [プロジェクト設定]-> [プロジェクト]2つのプロジェクトSDK変更します
    ここに画像の説明を挿入
  2. また、変更の言語レベルモジュールを
    ここに画像の説明を挿入

データベースへのアクセス時に発生する可能性のあるタイムゾーンの問題

解決策:データベースリンクの後にタイムゾーンパラメーター「?serverTimezone = UTC」を追加します。つまり、SqlMapConfig.xmlファイルでこの文を変更します。

        <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis?serverTimezone=UTC"/>

アノテーションを使用してこのプロジェクトを再実行します

アノテーションメソッドを使用してマッピング構成ファイルを削除し、代わりにアノテーションを使用してプロジェクトをより簡潔にすることができます。

1.daoインターフェースでSQLステートメントを指定するための注釈を追加します

daoインターフェイスを作成するときに、アノテーション@Select( "select * from user")をfindAllメソッドに追加して、マッピング構成ファイルを置き換えます。コードは次のように表示されます。

package com.cjx.dao;

import com.cjx.entity.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author :
 * @date :Created in 2019/11/7 17:07
 * @description : dao
 */
public interface IUserDao {

    /**
     * @author      :
     * @description :查询所有
     * @date        :Created in 2019/11/7
     */
    @Select("select * from user")
    List<User> findAll();
}

2.メイン構成ファイルでマッパーを構成します

SqlMapConfig.xmlで、クラス属性を使用して、マッパーを構成するときにdaoインターフェイスの完全修飾クラス名を指定します。コードは次のとおりです(主に最後の数行が変更されています)。構成が完了したら、次を追加できます。リソースの下のcom.cjx.dao。注釈によってxml構成ファイルが完全に置き換えられるため、IUserDao.xmlファイルが削除されます。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- MyBatis的主配置文件 -->
<configuration>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- 配置MySQL环境 -->
        <environment id="mysql">
            <!-- 配置事务类型 -->
            <transactionManager type="JDBC"/>
            <!-- 配置数据源/连接池 -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息  -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="1999"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 使用xml方式配置时这里指定映射配置文件的位置,但是本次使用注解配置,应该使用class属性指定被注解的dao全限定类名 -->
    <mappers>
        <mapper class="com.cjx.dao.IUserDao"/>
    </mappers>
</configuration>

IUserDao.xmlを削除し、もう一度[実行]をクリックした後でも、正常に実行できます。

おすすめ

転載: blog.csdn.net/VABTC/article/details/110794228
おすすめ