主流のフレームワーク:MyBatisのフレーム(1)
ワン:3層のフレームワークとまとめたもので
1.フレームワークとは何ですか?
私は、フレームワークについてお話しましょう、フレームワークは、私たちの面倒なコード簡単に説明にある達成カプセル化するので、ミニマリストの実装、大幅に開発効率を向上させることができます。さまざまな問題を解決するさまざまなフレームワーク。
2.三層MVCアーキテクチャ
javawebでは、プレゼンテーション層(表示データ)、ビジネス層(業務処理、トランザクション処理)、永続化層(データベースと対話)を含む、3層アーキテクチャで言っ
フレームワークで使用される3層アーキテクチャ
3永続化層(DAO)技術ソリューション
(1)JDBCテクノロジ:
Connection
PreparedStatement
ResultSet
例えば春JdbcTemplate(2)その他:
Spring中对jdbc的简单封装
(3)ApacheのDBUtils:
它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装
これらの仕様ではないフレームは春JdbcTemplate JDBCとApache DBUtilsツールがちょうどあるで
永続性(DAO層)の合計図。
2:MyBatisの概要
MyBatisのフレームワーク永続層 Javaで書かれたが、。それは封印された詳細JDBC操作の多くをインストールし、開発者は複雑な接続を作成し、それらの登録・ドライブに焦点を当てる必要なしに、SQL文自体を集中することができるということであるプロセスでは、彼はパッケージの結果セットを達成するためにORMのアイデアを使用しています。
ORM(Objeceリレーショナルマッピング)は考えた:オブジェクト・リレーショナル・マッピング名を示唆しています。
短い答えは、それはデータベースとエンティティクラスは、属性、我々はデータベースの動作を実現するためにエンティティクラスで作業できるように、それらに対応します。
数据库中是user id password 则实体类中就必须是user id password,我们只需要做到实体类中的属性和数据库表的字段名称保持一致。
三:Mybatis环境搭建
1.准备:
创建Maven工程导入jar坐标和Mybatis的坐标
在main中创建实体类和dao的接口(例如User和com.itheima.dao.IUserDao)
实体类和dao的接口
在resource资源目录下创建Mybatis整体的主配置文件SqlMapConifg.xml以及映射的配置文件
mybatis的主配置文件
创建映射配置文件IUserDao.xml
映射配置文件指的是每个dao独立的配置文件
环境搭建的注意事项:
1.创建IUserDao.xml和IUserDao.java时名称是为了和我们之前学习javaweb的知识相同一致。
在Mybatis中它把持久层的操作接口名称和映射文件也叫作Mapper(即mapper=dao)所以:IUserDao 和 IUserMapper是一样的
2.在IDEA创建目录的时候,它和包不一样,包在创建时:com.itheima.dao它是三级结构
目录在创建时:com.itheima.dao是一级目录
3.Mybatis的映射配置文件位置必须和 dao接口的包结构相同,也要是com.itheima.dao.
4.映射配置文件(IUserDao.xml)mapper标签和namespace属性的取值必须是dao接口的全限定类名
5.映射配置文件(IUserDao.xml)对数据库的操作配置(select),id 属性必须是dao接口的方法名(findAll)
因此,我们遵从了以上点时,我们就无需再在开发中书写dao的实现类了(只需要写接口)。
2.代码案例分析
一切环境配置准备就绪后,我们开始编写测试工具类,来实现功能。
编写测试类:com.itheima.test.MybatisTest
(1)读取主的配置文件(主配置里面包含映射配置)
InputStream in = Resources.getResourceAsStream(“SqlMapConfig.xml”);
(2)创建SqlSessionFactory工厂(构建者设计模式):项目给设计者builder,builder替我们项目生成一个工厂。
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
(3)创建SqlSession对象(工厂模式):使用工厂来创建SqlSession对象。
SqlSession session = factory.openSession(); //工厂factory来生产session对象
(4)创建Dao接口的代理对象(代理模式):使用session来创建代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
(5)使用代理对象来执行dao的方法
List users = userDao.findAll(); 最后打印users即可
(6)資源の解放:session.close(); in.close() ;
注:ドゥマップコンフィギュレーションモードでカプセル化することがMyBatisのを通知することを忘れないでいるのエンティティクラスの設定:指定されたエンティティクラスのcom.itheimaの完全修飾クラス名.domain.User
4:MyBatisの注釈ベースのプログラミング
(1)とすることができる除去IUserDao.xmlマッピング構成
(2)メソッドのDAOインタフェース上の利用@selectコメント、およびそのSQL文を知っています、
(3)同時に必要で時間マッパーSqlMapConfig.xmlマスタープロファイルの設定、クラス属性が指定する完全修飾クラス名のDAOインタフェースを使用しています。(Com.itheima.dao.IUserDao)
と当社の実際の開発は、すべてのよりシンプルに、より良いので、書き込みDAOクラスの実装に基づいていません。かかわらず、注釈やXML構成の。しかし、MyBatisのは、それが書かれたDAOのサポートの実装クラスです。