1、3層アーキテクチャ
1. 3層構造に対応する責任:
- インターフェース層(ビュー層):主な機能は、ユーザーの要求データを受信し、処理結果を表示することです
- ビジネスロジック層:ページからデータを受信し、ビジネスロジックを計算し、データアクセス層を呼び出してデータを取得します。
- データアクセス層:データベースを扱う場合、主にデータの追加、削除、変更、チェックを実現します。データベースに保存されているデータをビジネス層に送信し、ビジネス層で処理されたデータをデータベースに保存します。
2.3つのレイヤーに対応するパッケージ:
- インターフェース層:コントローラーパッケージ(サーブレット)
- ビジネスロジック層:サービスパッケージ(XXXServiceクラス)
- データアクセス層:daoパッケージ(XXXDaoクラス)
3.3つのレイヤー間の処理要求と相互作用の関係:
ユーザー<->インターフェース層<->ビジネスロジック層<->データアクセス層(永続層)<->データベース
4.3つのレイヤーに対応する処理フレームワーク:
- インターフェース層:サーブレット---- springmvcフレームワーク
- ビジネスロジック層:サービスクラス-Springフレームワーク
- データアクセス層:daoクラス-mybatisフレームワーク
第二に、Mybatisフレームワークとは何ですか
1.Mybatisフレームワーク
- これは、jdbcを内部にカプセル化する永続層フレームワークです。プログラマーは、ドライバーのロード、接続の作成、ステートメントの作成、接続のクローズなどのプロセスを処理することなく、SQLステートメント自体に注意を払うだけで済みます。
- Mybatisは、主にxmlまたはアノテーションを介して実行されるSQLステートメントを構成し、インスタンスオブジェクトとSQLステートメントの動的パラメーターをマップして最終的に実行されるSQLステートメントを生成し、最後にSQLステートメントがMybatisフレームワークによって実行されます。 Javaオブジェクトにマップして戻ります。
2、jdbcプログラミング
public void findStudent(){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//注册MySQL驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据的基本信息
String url = "jdbc:mysql://localhost:3306/test";
String username="root";
String password = "123456";
//创建连接对象
conn = DriverManager.getConnection(url, username, password);
//保存查询结果
List<Student> stuList = new ArrayList<>();
//创建Statement,用来执行SQL语句
st = conn.createStatement();
//执行查询,创建记录集
rs = st.executeQuery("select * from text ");
while (rs.next()){
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
//从数据库取出的数据转为Student对象,封装到List集合中
stuList.add(stu);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
//关闭资源
if (rs != null) ;{
rs.close();
}
if (st != null) {
st.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.jdbcプログラミングの使用の欠陥
- コードが多く、繰り返しコードが多いため、開発効率が低くなります
- Connection、Statement、ResultSetオブジェクトの作成と破棄に注意を払う必要があります
- ResultSetクエリの結果をオブジェクトに変換するには、それをリストコレクションとしてカプセル化する必要があります
- ビジネスコードと運用データベースコードが混在
4.Mybatisによって解決された主な問題
- データベースドライバを登録します。次に例を示します。
Class.forName("com.mysql.jdbc.Driver");
- 開発者がこれらのオブジェクトを作成せずに、Connection、Statement、ResultSetを作成する機能を提供します
- xmlファイルからSQLを取得してSQLを実行し、ResultSetの結果をJavaオブジェクト、リストコレクションに変換する機能
List<Student> list = new ArrayLsit<>();
ResultSet rs = state.executeQuery(“select * from student”);
while(rs.next){
Student student = new Student();
student.setName(rs.getString(“name”));
student.setAge(rs.getInt(“age”));
list.add(student);
}
- Connection、Statement、ResultSetを閉じることなくリソースを閉じる機能を提供します
- 開発者:SQLステートメントを提供-> MybatisプロセスSQL->開発者はリストコレクションまたはJavaオブジェクト(テーブル内のデータ)を取得します
5.Mybatisの2つの機能
- (1)SQLマッパー:SQLマッピング:
データベーステーブル内のデータの行をJavaオブジェクトにマップできます。このオブジェクトを操作することは、テーブルのデータを操作することと同じです。
- (2)データアクセスオブジェクト(DAO):データアクセス
データベースの追加、削除、変更、およびチェック