目次
DAO由两部分组成:" >DAO由两部分组成:
DAO包下面分4个包:" >DAO包下面分4个包:
代码实现:" >代码实现:

JDBCDAO优化

Jun 07, 2016 pm 02:50 PM
access dao data obj 最適化

DAO(Data Access Object)数据访问对象是一个数据访问接口,处理业务逻辑与数据库资源之间的关系。 DAO由两部分组成: 1.Data Access:数据访问,实现数据访问与业务逻辑的分离。 2.Action Domain Object:领域对象,业务数据对象的封装。 DAO模式的实现: 1.DA



DAO(Data Access Object)数据访问对象是一个数据访问接口,处理业务逻辑与数据库资源之间的关系。


DAO由两部分组成:

1.Data Access:数据访问,实现数据访问与业务逻辑的分离。

2.Action Domain Object:领域对象,业务数据对象的封装。


DAO模式的实现:

1.DAO的工厂类:构造DAO的实例对象。

2.DAO的接口:提供接口抽象方法,引导子类实现。

3.DAO的实现子类:实现接口方法。

4.数据对象:封装数据。


DAO包下面分4个包:

1.dao包:存放抽象接口的方法。

2.dao.impl包:存放实现子类的方法。

3.pojo包:存放封装的数据信息。

4.util包:存放工厂类。


代码实现:


父类接口:

public interface TeacherDao {//父类接口
	public boolean insert(Teacherpojo tea) throws Exception;
	public boolean delete(int id) throws Exception;
	public boolean update(Teacherpojo tea) throws Exception;
	public List<teacherpojo> query() throws Exception;
	public Teacherpojo queryById(int id) throws Exception;
}</teacherpojo>
ログイン後にコピー


具体实现语句预制的方法:

public static int update(String sql,Object...objects) throws Exception {
		Connection con = SQLUtil.getConnection();//获取连接
		PreparedStatement ps = con.prepareStatement(sql);//获取预制对象
		for (int i=0;i<objects.length ps.setobject objects return ps.executeupdate><br>
<br>

<br>
子类实现(添加一条数据):
<p><span style="font-size:24px"></span></p>
<pre name="code" class="java">public boolean insert(Teacherpojo tea) throws Exception {
		String sql = "insert into teacher (id,name,gender,age,job,creatDate) "
				+ "values(?,?,?,?,?,?)";
		int result = SQLTemplete.update(sql, tea.getId(),tea.getName(),
				tea.getGender(),tea.getAge(),tea.getJob(),tea.getCreatdate());
		System.out.println("执行完成...");
		if(result > 0){
			return true;
		}
		return false;
	}
ログイン後にコピー

结果图示:



删除一条数据:

public boolean delete(int id) throws Exception {
		String sql = "delete from teacher where id=?";
		int result = SQLTemplete.update(sql, id);
		System.out.println("执行完成...");
		if( result > 0 ){
			return true;
		}
		return false;
	}
ログイン後にコピー

删除结果图示:





修改一条数据:

public boolean update(Teacherpojo tea) throws Exception {
		String sql = "update teacher set "
				+ "id=?,name=?,gender=?,age=?,job=?,creatDate=? where id=?";
		int result = SQLTemplete.update(sql, tea.getId(),tea.getName(),tea.getGender(),
				tea.getAge(),tea.getJob(),tea.getCreatdate(),tea.getId());
		System.out.println("执行完成...");
		if( result > 0 ){
			return true;
		}
		return false;
	}
ログイン後にコピー

添加结果图示:




查找所有的数据,返回一个数据队列:

public ArrayList<teacherpojo> query() throws SQLException {
		Connection con = SQLUtil.getConnection();
		Statement state = con.createStatement();
		String sql = "select * from teacher";
		ResultSet rs = state.executeQuery(sql);
		ArrayList<teacherpojo> list = new ArrayList<teacherpojo>();
		Teacherpojo tp ;
		while(rs.next()){
			tp = new Teacherpojo();
			tp.setId(rs.getInt("id"));
			tp.setName(rs.getString("name"));
			tp.setAge(rs.getInt("age"));
			tp.setGender(rs.getString("gender"));
			tp.setJob(rs.getString("job"));
			tp.setCreatdate(rs.getString("creatDate"));
			list.add(tp);
		}
		System.out.println("执行完成...");
		return list;
	}</teacherpojo></teacherpojo></teacherpojo>
ログイン後にコピー

结果图示:



很多时候并不是要查询所有的结果,要的是部分条件查询结果,所有可以写一个预制查找的方法,代码如下:


public static ResultSet query(String sql,Object...objects) throws Exception{
		Connection con = SQLUtil.getConnection();
		PreparedStatement ps = con.prepareStatement(sql);
		for (int i = 0; i <br>
结果图示,我只搜索关于gender为man的数据:
<p><span style="font-size:24px"><img src="/static/imghw/default1.png" data-src="http://img.blog.csdn.net/20160506200506812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" class="lazy" alt=""><br>
</span></p>
<p><span style="font-size:24px"><br>
</span></p>
<p><span style="font-size:24px"><br>
</span></p>
<p><span style="font-size:24px"><br>
</span></p>
<p><span style="font-size:24px"><br>
</span></p>
   








ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C#でマルチスレッドの利点は何ですか? C#でマルチスレッドの利点は何ですか? Apr 03, 2025 pm 02:51 PM

マルチスレッドの利点は、特に大量のデータを処理したり、時間のかかる操作を実行したりするために、パフォーマンスとリソースの使用率を改善できることです。複数のタスクを同時に実行できるようになり、効率が向上します。ただし、あまりにも多くのスレッドがパフォーマンスの劣化につながる可能性があるため、CPUコアの数とタスク特性に基づいてスレッドの数を慎重に選択する必要があります。さらに、マルチスレッドプログラミングには、同期メカニズムを使用して解決する必要があるデッドロックや人種条件などの課題が含まれ、同時プログラミングの確固たる知識が必要であり、長所と短所を比較検討し、それらを慎重に使用する必要があります。

SQL IFステートメントの使用方法 SQL IFステートメントの使用方法 Apr 09, 2025 pm 06:12 PM

SQLステートメントは、SQLステートメントを条件付きで実行するために使用され、構文は次のようになります。if(条件)then {ステートメント} else {ステートメント} end if;。条件は有効なSQL式である可能性があり、条件が真の場合、then句を実行します。条件が偽の場合は、else句を実行します。ステートメントをネストできる場合、より複雑な条件付きチェックを可能にします。

rootとしてmysqlにログインできません rootとしてmysqlにログインできません Apr 08, 2025 pm 04:54 PM

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

ノード環境で403エラーを返すサードパーティのインターフェイスを回避する方法は? ノード環境で403エラーを返すサードパーティのインターフェイスを回避する方法は? Apr 01, 2025 pm 02:03 PM

ノード環境で403エラーを返すサードパーティのインターフェイスを回避する方法。 node.jsを使用してサードパーティのWebサイトインターフェイスを呼び出すと、403エラーを返す問題が発生することがあります。 �...

ドメイン全体のvue axiosによって引き起こされる「ネットワークエラー」を解決する方法 ドメイン全体のvue axiosによって引き起こされる「ネットワークエラー」を解決する方法 Apr 07, 2025 pm 10:27 PM

VUE axiosのクロスドメイン問題を解決する方法は次のとおりです。CORSプラグインを使用してWebSockingを使用してJSONPを使用してAxiosプロキシを使用してサーバー側にCORSヘッダーを構成します。

easywechat 5.5でcomponent_verify_ticketを効率的に取得する方法は? easywechat 5.5でcomponent_verify_ticketを効率的に取得する方法は? Apr 01, 2025 pm 12:42 PM

easywechat5.5でcomponentverifyを取得します...

Apache用のZendを構成する方法 Apache用のZendを構成する方法 Apr 13, 2025 pm 12:57 PM

ApacheでZendを構成する方法は? Apache WebサーバーでZend Frameworkを構成する手順は次のとおりです。ZendFrameworkをインストールし、Webサーバーディレクトリに抽出します。 .htaccessファイルを作成します。 Zend Application Directoryを作成し、index.phpファイルを追加します。 Zend Application(Application.ini)を構成します。 Apache Webサーバーを再起動します。

Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Apr 12, 2025 pm 11:36 PM

この記事では、Debianシステムの下でApacheログを分析することにより、Webサイトのパフォーマンスを改善する方法について説明します。 1.ログ分析の基本Apacheログは、IPアドレス、タイムスタンプ、リクエストURL、HTTPメソッド、応答コードなど、すべてのHTTP要求の詳細情報を記録します。 Debian Systemsでは、これらのログは通常、/var/log/apache2/access.logおよび/var/log/apache2/error.logディレクトリにあります。ログ構造を理解することは、効果的な分析の最初のステップです。 2。ログ分析ツールさまざまなツールを使用してApacheログを分析できます。コマンドラインツール:GREP、AWK、SED、およびその他のコマンドラインツール。

See all articles