MyBatisの紹介と最初のプログラム

MyBatisとは

MyBatisは優れた永続性レイヤーフレームワークです

MyBatisは、ほとんどすべてのJDBCコードと、パラメーターを手動で設定して結果セットを取得するプロセスを回避します。

MyBatisは、単純なXMLまたは注釈を使用して、ネイティブ情報を構成およびマップし、インターフェースおよびJavaエンティティークラス[Plain Old JavaObjects]をデータベース内のレコードにマップできます。

MyBatisは元々apacheのオープンソースプロジェクトであるibatisでしたが、2010年に、このプロジェクトはapacheからgoogleコードに移行され、MyBatisに名前が変更されました。

2013年11月にGithubに移行しました。

Mybatisの公式ドキュメント:http//www.mybatis.org/mybatis-3/zh/index.html

GitHub:https//github.com/mybatis/mybatis-3

なぜMybatisが必要なのですか

操作の簡素化
Mybatisは、プログラマーがデータベースにデータを保存し、データベースからデータをフェッチするのを支援することです。

従来のjdbc操作には、多くの重複コードブロックがあります。たとえば、データ取得時のカプセル化、データベース接続の確立など、フレームワークはコードの重複を減らし、開発効率を向上させることができます。

MyBatisは半自動化されたORMフレームワーク(オブジェクト関係マッピング)->オブジェクト関係マッピング

Mybatisがなくてもすべてのことができますが、Mybatisを使用すると、すべての実装が簡単になります。高い技術も低い技術もありません。この技術を使用する人だけが高いまたは低い違いを持っ​​ています

MyBatisの利点

シンプルで習得しやすい
それ自体は小さくてシンプルです。サードパーティの依存関係はありません。最も簡単なインストールは、2つのjarファイルと複数のSQLマッピングファイルが構成されている限りです。習得と使用が簡単です。ドキュメントとソースコードを通じて、その設計アイデアを完全に把握できます。と実装。

柔軟な
mybatisは、アプリケーションまたはデータベースの既存の設計に影響を与えません。sqlはxmlで記述されており、統合された管理と最適化に便利です。SQLステートメントを介して、データベースを操作するすべてのニーズを満たすことができます。

SQLとプログラムコードの分離:DAOレイヤーを提供することにより、ビジネスロジックとデータアクセスロジックが分離され、システム設計がより明確になり、保守が容易になり、単体テストが容易になります。SQLとコードを分離すると、保守性が向上します。

xmlタグを提供し、動的SQLの記述をサポートします。

最初のMyBatisプログラム

アイデアプロセス:環境の構築-> Mybatisのインポート->コードの記述->テスト

コードデモ

1.実験データベースを構築する

CREATE DATABASE `mybatis`;

USE `mybatis`;

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `user`(`id`,`name`,`pwd`) 
values (1,'狂神','123456'),
(2,'张三','abcdef'),
(3,'李四','987654');

2.MyBatis関連のjarパッケージをインポートします

GitHubで検索

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.5.2</version>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.47</version>
</dependency>

3.MyBatisのコア構成ファイルを書き込みます

ヘルプドキュメントを表示する

<?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">
<configuration>
   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
               <property name="username" value="root"/>
               <property name="password" value="123456"/>
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="com/kuang/dao/userMapper.xml"/>
   </mappers>
</configuration>

4.MyBatisツールクラスを作成します

ヘルプドキュメントを表示する

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.IOException;
import java.io.InputStream;

public class MybatisUtils {
    
    

   private static SqlSessionFactory sqlSessionFactory;

   static {
    
    
       try {
    
    
           String resource = "mybatis-config.xml";
           InputStream inputStream = Resources.getResourceAsStream(resource);
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      } catch (IOException e) {
    
    
           e.printStackTrace();
      }
  }

   //获取SqlSession连接
   public static SqlSession getSession(){
    
    
       return sqlSessionFactory.openSession();
  }

}

5.エンティティクラスを作成します

public class User {
    
    
   
   private int id;  //id
   private String name;   //姓名
   private String pwd;   //密码
   
   //构造,有参,无参
   //set/get
   //toString()
   
}

6、マッパーインターフェースクラスを書く

import com.kuang.pojo.User;
import java.util.List;

public interface UserMapper {
    
    
   List<User> selectUser();
}

7.Mapper.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.kuang.dao.UserMapper">
 <select id="selectUser" resultType="com.kuang.pojo.User">
  select * from user
 </select>
</mapper>

8.テストクラスを作成します

JUnitパッケージテスト

public class MyTest {
    
    
   @Test
   public void selectUser() {
    
    
       SqlSession session = MybatisUtils.getSession();
       //方法一:
       //List<User> users = session.selectList("com.kuang.mapper.UserMapper.selectUser");
       //方法二:
       UserMapper mapper = session.getMapper(UserMapper.class);
       List<User> users = mapper.selectUser();

       for (User user: users){
    
    
           System.out.println(user);
      }
       session.close();
  }
}

9.テストを実行します

データのクエリに成功しました。

問題があるかもしれません

Maven静的リソースフィルタリングの問題

<resources>
   <resource>
       <directory>src/main/java</directory>
       <includes>
           <include>**/*.properties</include>
           <include>**/*.xml</include>
       </includes>
       <filtering>false</filtering>
   </resource>
   <resource>
       <directory>src/main/resources</directory>
       <includes>
           <include>**/*.properties</include>
           <include>**/*.xml</include>
       </includes>
       <filtering>false</filtering>
   </resource>
</resources>

おすすめ

転載: blog.csdn.net/david2000999/article/details/114526798