マイバティスとは何ですか? Mybatis関連コンテンツのご紹介
この記事では、Mybatis とは何ですか? Mybatis関連のコンテンツの紹介は、必要な友人が参考になれば幸いです。
MyBatis の紹介
MyBatis はもともと Apache のオープン ソース プロジェクト iBatis でしたが、2010 年にこのプロジェクトは Apache ソフトウェア基盤から Google Code に移行されました。 MyBatis という名前に変更されました。 2013 年 11 月に Github に移行しました。
MyBatis は、カスタマイズされた SQL、ストアド プロシージャ、高度なマッピングをサポートする優れた永続層フレームワークです。 MyBatis は、ほとんどすべての JDBC コード、パラメータの手動設定、結果セットの取得を回避します。 MyBatis は、単純な XML またはアノテーションを構成に使用し、ネイティブ マップを使用してインターフェイスと Java POJO (Plain Old Java Objects、通常の Java オブジェクト) をデータベース内のレコードにマップできます。
MyBatis リファレンス公式 Web サイト
http://www.mybatis.org/mybatis-3/zh/index.html
MyBatis ダウンロード アドレス
https://github.com/mybatis/mybatis-3
MyBatis の利点
-
オープンソースの優れた永続層フレームワーク
SQL ステートメントとコードの分離
- ##構成指向プログラミング ##複雑なデータ マッピングの優れたサポート
- 動的 SQL
1. 必要な jar パッケージを追加します。
##1) mybatis-3.3.0 コアパッケージ (ログ操作が必要な場合は、依存パッケージをインポートできます)
2) データベースドライバー (mysql-connector-java-5.1.22) -bin)2. データベースを作成し、テスト データを追加します
create table `tal_employee` ( `id` int (11), `last_name` varchar (360), `email` varchar (300), `gender` char (9) );
INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('1','韩信','hanxin@gemail.com','男'); INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('2','LiBaihH','libai@gemail.com','男'); INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('3','孙尚香','sunshangxiang@gemail.com','女'); INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('4','安琪拉','anqila@gemail.com','女'); INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('5','Hello','Hello@gemail.com','男'); INSERT INTO `tal_employee` (`id`, `last_name`, `email`, `gender`) VALUES('6','Miya','Miya@gemail.com','男');
public class Employee {
private Integer id;
private String lastName;
private String email;
private String gender;
//此处省略get set toString。。。
}
ログイン後にコピー 4. エンティティ クラス マッピング設定ファイルを作成します
public class Employee { private Integer id; private String lastName; private String email; private String gender; //此处省略get set toString。。。 }
<?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="EmployeeMapper">
<!-- 定义一个查询方法 resultType 返回值类型-->
<select id="findAll" resultType="com.simple.mybatis.entitys.Employee">
select * from tal_employee
</select>
</mapper>
ログイン後にコピー5. mybatis メイン設定ファイルを作成します
<?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="EmployeeMapper"> <!-- 定义一个查询方法 resultType 返回值类型--> <select id="findAll" resultType="com.simple.mybatis.entitys.Employee"> select * from tal_employee </select> </mapper>
<?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>
<!-- 配置环境 default默认使用环境名字-->
<environments default="development">
<!-- 配置一个环境 -->
<environment id="development">
<!-- 使用事务JDBC事务管理器 -->
<transactionManager type="JDBC" />
<!-- 配置数据库连接 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 加载映射 -->
<mappers>
<mapper resource="com/simple/mybatis/entitys/EmployeeMapper.xml" />
</mappers>
</configuration>
ログイン後にコピーSqlSessionFactory オブジェクトを取得します
<?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> <!-- 配置环境 default默认使用环境名字--> <environments default="development"> <!-- 配置一个环境 --> <environment id="development"> <!-- 使用事务JDBC事务管理器 --> <transactionManager type="JDBC" /> <!-- 配置数据库连接 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 加载映射 --> <mappers> <mapper resource="com/simple/mybatis/entitys/EmployeeMapper.xml" /> </mappers> </configuration>
private SqlSessionFactory sqlSessionFactory; @Before public void init() throws IOException{ //读取mybatis主配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); /** * 实例化SqlSessionFactory * 如果没有指定默认环境,可以在这里指定使用的环境ID,比如我先在有个DEV环境 * sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,"DEV"); * 我这里已经使用了默认环境所以我就不用这种方式创建了 */ sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }
データベースへのアクセス
SqlSession オブジェクトの取得、データベースとの会話の実行、データベースとの会話の実行SqlSession session = sqlSessionFactory.openSession();
EmployeeMapper はエンティティ クラス マッピング ファイルの名前空間、findAll は選択タグの IDです
List<Employee> employees = session.selectList("EmployeeMapper.findAll"); for (Employee employee : employees) { System.out.println(employee); }
アクセス結果:
Employee [id=1, lastName=null, email=hanxin@gemail.com, gender=男] Employee [id=2, lastName=null, email=libai@gemail.com, gender=男] Employee [id=3, lastName=null, email=sunshangxiang@gemail.com, gender=女] Employee [id=4, lastName=null, email=anqila@gemail.com, gender=女] Employee [id=5, lastName=null, email=Hello@gemail.com, gender=男] Employee [id=6, lastName=null, email=Miya@gemail.com, gender=男]
これは私たちにとっては正常ですここのデータベースにアクセスするには、なぜ lastName が空なのでしょうか?
テーブル フィールドとクラス属性名の不一致に対する解決策理由: lastName というエンティティ クラスの属性が、エンティティ クラスの名前に対応していないためです。データベース列 last_name なので、それが取得されます。値は空です。解決策 1: エンティティ クラス マッピング ファイルの select タグに別名を付けます。
<select id="findAll" resultType="com.simple.mybatis.entitys.Employee"> select id,last_name AS lastName,email,gender from tal_employee </select>
解決策 2: キャメル ケースの名前付けをmybatis メイン設定ファイルを使用する必要があります。設定が最初にランク付けされます。そうでない場合は、XML エラーが報告されます。
<settings> <!-- 开启驼峰式命名规则 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
オプション 2 を使用します。クラスの属性 lastName は、データベース フィールド last_name
# と一致します。 ##ログを使用して SQL ステートメントなどを表示します
まず、mybatis 依存関係パッケージを追加する必要がありますlog4j.properties
#设置输出级别和输出位置 log4j.rootLogger=debug,Console #设置控制台相关的参数 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n #设置MyBatis的输出内容 log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
MyBatis 設定ファイル
前述の単純な MyBatis のケースを通じて、MyBatis フレームワークの基本構造を理解する必要があります。 Hibernate と同様に、MyBatis にはコア構成ファイルとマッピング ファイルが含まれています。
- コア構成ファイル (mybatis-config.xml): 接続プール情報、トランザクション、ロード マッピング ファイル、パラメーター設定、その他の構成を含む、Mybatis のコア構成が含まれます。
- マッピング ファイル (EmployeeMapper.xml): 主にエンティティ オブジェクトのデータベース、関連付け、SQL ステートメントなどへのマッピングを実装します。 #コア構成ファイル
##一部の外部プロパティ。これらのプロパティは置き換えることができます | |
Mybatis の非常に重要な調整設定により、Mybatis のデフォルトの動作が変更されます。 | |
Java タイプのエイリアスを設定します。これは XML 設定にのみ関連します。 | |
Mapper、MyBatis マッピング ファイルをロードします。 | |
プラグイン Mybatis を使用すると、ユーザーはマッピング内の特定のポイントでインターセプトできます。 | |
环境配置
事务管理在 MyBatis来进行事务的设置,其中有两种类型的事务管理器。
<transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager> ログイン後にコピー 如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。 数据源使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。有三种数据源类型
properties标签properties为外部属性,比如数据库连接信息可以配置到一个单独的properties文件中,然后在xml中进行引入。 添加一个db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username=root password=root ログイン後にコピー 在mybatis主配置文件中引用 <properties resource="db.properties" /> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> ログイン後にコピー 映射器通常MyBatis中将映射关系(非必须)和SQL语句写入到映射文件中,在配置文件中需要手动进行加载映射文件。加载映射文件使用进行加载。Mybatis中有4种加载方式。 1.使用resource,加载classpath路径进行加载。 <mappers> <mapper resource="com/simple/mybatis/entitys/EmployeeMapper.xml"/> </mappers> ログイン後にコピー 2.使用url路径进行加载。 <mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> </mappers> ログイン後にコピー 3.使用calss进行加载,注解方式。 <!– 加载class类--> <mappers> <mapper class="使用注解的全类名"/> </mappers> ログイン後にコピー 4.使用package进行加载,注解方式。 <!– 加载某个包下的所有class文件--> <mappers> <package name="com.simple.mybatis.entitys"/> </mappers> ログイン後にコピー 别名的使用之前,我们在sql映射xml文件中的引用实体类时,resultType需要写上实体类的全类名(包名+类名),如下: <select id="findAll" resultType="com.simple.mybatis.entitys.Employee"> select id,last_name AS lastName,email,gender from tal_employee </select> ログイン後にコピー ログイン後にコピー 在mybatis主配置文件中加入 <typeAliases> <typeAlias type=“com.simple.mybatis.entitys.Employee" alias="Employee"/> </typeAliases> ログイン後にコピー 这样在resultType中就可以直接使用Employee类型了。这个别名是不区分大小写的。 以上がマイバティスとは何ですか? Mybatis関連コンテンツのご紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。 このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
![]() ホットAIツール![]() Undresser.AI Undressリアルなヌード写真を作成する AI 搭載アプリ ![]() AI Clothes Remover写真から衣服を削除するオンライン AI ツール。 ![]() Undress AI Tool脱衣画像を無料で ![]() Clothoff.ioAI衣類リムーバー ![]() AI Hentai GeneratorAIヘンタイを無料で生成します。 ![]() 人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
2週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.チャットコマンドとそれらの使用方法
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
![]() ホットツール![]() メモ帳++7.3.1使いやすく無料のコードエディター ![]() SublimeText3 中国語版中国語版、とても使いやすい ![]() ゼンドスタジオ 13.0.1強力な PHP 統合開発環境 ![]() ドリームウィーバー CS6ビジュアル Web 開発ツール ![]() SublimeText3 Mac版神レベルのコード編集ソフト(SublimeText3) ![]() ホットトピック
Gmailメールのログイン入り口はどこですか?
![]() ![]()
CakePHP チュートリアル
![]() ![]()
Steamのアカウント名の形式は何ですか
![]() ![]()
NYTの接続はヒントと回答です
![]() ![]() ![]() iBatis と MyBatis: どちらを選択するべきですか?はじめに: Java 言語の急速な発展に伴い、多くの永続化フレームワークが登場しました。 iBatis と MyBatis は 2 つの人気のある永続化フレームワークであり、どちらもシンプルで効率的なデータ アクセス ソリューションを提供します。この記事では、iBatis と MyBatis の機能と利点を紹介し、適切なフレームワークを選択するのに役立つ具体的なコード例をいくつか示します。 iBatis の紹介: iBatis はオープンソースの永続化フレームワークです。 ![]() MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。 ![]() MyBatis でバッチ削除ステートメントを実装するいくつかの方法には、特定のコード例が必要です。近年、データ量の増加により、バッチ操作がデータベース操作の重要な部分になっています。実際の開発では、データベース内のレコードを一括で削除する必要が生じることがよくあります。この記事では、MyBatis でバッチ削除ステートメントを実装するいくつかの方法に焦点を当て、対応するコード例を示します。 foreach タグを使用してバッチ削除を実装します。MyBatis は、セットを簡単に横断できる foreach タグを提供します。 ![]() JPA と MyBatis: 機能とパフォーマンスの比較分析 はじめに: Java 開発では、永続化フレームワークが非常に重要な役割を果たします。一般的な永続化フレームワークには、JPA (JavaPersistenceAPI) や MyBatis などがあります。この記事では、2 つのフレームワークの機能とパフォーマンスを比較分析し、具体的なコード例を示します。 1. 機能の比較: JPA: JPA は JavaEE の一部であり、オブジェクト指向のデータ永続化ソリューションを提供します。アノテーションまたはXが渡されます ![]() MyBatis バッチ削除ステートメントの使用方法の詳細な説明には、特定のコード例が必要です はじめに: MyBatis は、豊富な SQL 操作機能を提供する優れた永続層フレームワークです。実際のプロジェクト開発では、データを一括で削除する必要がある場面に遭遇することがよくあります。この記事では、MyBatis のバッチ削除ステートメントの使用方法を詳しく紹介し、具体的なコード例を添付します。使用シナリオ: データベース内の大量のデータを削除する場合、削除ステートメントを 1 つずつ実行するのは非効率です。このとき、MyBatisの一括削除機能が利用できます。 ![]() MyBatis 1次キャッシュの詳細解説:データアクセス効率を高めるには?開発プロセス中、効率的なデータ アクセスは常にプログラマーの焦点の 1 つでした。 MyBatis のような永続層フレームワークの場合、キャッシュはデータ アクセス効率を向上させるための重要な方法の 1 つです。 MyBatis は、一次キャッシュと二次キャッシュという 2 つのキャッシュ メカニズムを提供しており、一次キャッシュはデフォルトで有効になっています。この記事では、MyBatis の 1 次キャッシュのメカニズムを詳細に紹介し、読者の理解を深めるために具体的なコード例を示します。 ![]() MyBatis のキャッシュ メカニズムの分析: 1 次キャッシュと 2 次キャッシュの違いと応用 MyBatis フレームワークでは、キャッシュはデータベース操作のパフォーマンスを効果的に向上させることができる非常に重要な機能です。そのうち、一次キャッシュと二次キャッシュは、MyBatis でよく使用される 2 つのキャッシュ メカニズムです。この記事では、一次キャッシュと二次キャッシュの違いと用途を詳細に分析し、具体的なコード例を示して説明します。 1. レベル 1 キャッシュ レベル 1 キャッシュはローカル キャッシュとも呼ばれ、デフォルトで有効になっており、オフにすることはできません。 1次キャッシュはSqlSesです ![]() MyBatisGenerator は、MyBatis が公式に提供するコード生成ツールで、開発者がデータベース テーブル構造に準拠した JavaBeans、Mapper インターフェイス、および XML マッピング ファイルを迅速に生成するのに役立ちます。コード生成に MyBatisGenerator を使用するプロセスでは、構成パラメーターの設定が重要です。この記事では、構成パラメータの観点から開始し、MyBatisGenerator の機能を詳しく説明します。 ![]() |