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/imghwm/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>

MySQLとSQLiteの主な違いは、設計コンセプトと使用法のシナリオです。1。MySQLは、大規模なアプリケーションとエンタープライズレベルのソリューションに適しており、高性能と高い並行性をサポートしています。 2。SQLiteは、モバイルアプリケーションとデスクトップソフトウェアに適しており、軽量で埋め込みやすいです。

MySQLのインデックスは、データの取得をスピードアップするために使用されるデータベーステーブル内の1つ以上の列の順序付けられた構造です。 1)インデックスは、スキャンされたデータの量を減らすことにより、クエリ速度を改善します。 2)B-Tree Indexは、バランスの取れたツリー構造を使用します。これは、範囲クエリとソートに適しています。 3)CreateIndexステートメントを使用して、createIndexidx_customer_idonorders(customer_id)などのインデックスを作成します。 4)Composite Indexesは、createIndexIDX_CUSTOMER_ORDERONORDERS(Customer_Id、Order_date)などのマルチコラムクエリを最適化できます。 5)説明を使用してクエリ計画を分析し、回避します

MySQLでトランザクションを使用すると、データの一貫性が保証されます。 1)StartTransactionを介してトランザクションを開始し、SQL操作を実行して、コミットまたはロールバックで送信します。 2)SavePointを使用してSave Pointを設定して、部分的なロールバックを許可します。 3)パフォーマンスの最適化の提案には、トランザクション時間の短縮、大規模なクエリの回避、分離レベルの使用が合理的に含まれます。

MySQLの代わりにPostgreSQLが選択されるシナリオには、1)複雑なクエリと高度なSQL関数、2)厳格なデータの整合性と酸コンプライアンス、3)高度な空間関数が必要、4)大規模なデータセットを処理するときに高いパフォーマンスが必要です。 PostgreSQLは、これらの側面でうまく機能し、複雑なデータ処理と高いデータの整合性を必要とするプロジェクトに適しています。

MySQLデータベースのセキュリティは、以下の測定を通じて達成できます。1。ユーザー許可管理:CreateUSERおよびGrantコマンドを通じてアクセス権を厳密に制御します。 2。暗号化された送信:SSL/TLSを構成して、データ送信セキュリティを確保します。 3.データベースのバックアップとリカバリ:MySQLDUMPまたはMySQLPumpを使用して、定期的にデータをバックアップします。 4.高度なセキュリティポリシー:ファイアウォールを使用してアクセスを制限し、監査ロギング操作を有効にします。 5。パフォーマンスの最適化とベストプラクティス:インデックス作成とクエリの最適化と定期的なメンテナンスを通じて、安全性とパフォーマンスの両方を考慮に入れます。

MySQLのパフォーマンスを効果的に監視する方法は? MySqladmin、ShowGlobalStatus、PerconAmonitoring and Management(PMM)、MySQL EnterpriseMonitorなどのツールを使用します。 1. mysqladminを使用して、接続の数を表示します。 2。showglobalstatusを使用して、クエリ番号を表示します。 3.PMMは、詳細なパフォーマンスデータとグラフィカルインターフェイスを提供します。 4.mysqlenterprisemonitorは、豊富な監視機能とアラームメカニズムを提供します。

MySQLとSQLServerの違いは次のとおりです。1)MySQLはオープンソースであり、Webおよび埋め込みシステムに適しています。2)SQLServerはMicrosoftの商用製品であり、エンタープライズレベルのアプリケーションに適しています。ストレージエンジン、パフォーマンスの最適化、アプリケーションシナリオの2つには大きな違いがあります。選択するときは、プロジェクトのサイズと将来のスケーラビリティを考慮する必要があります。

高可用性、高度なセキュリティ、優れた統合を必要とするエンタープライズレベルのアプリケーションシナリオでは、MySQLの代わりにSQLServerを選択する必要があります。 1)SQLServerは、高可用性や高度なセキュリティなどのエンタープライズレベルの機能を提供します。 2)VisualStudioやPowerbiなどのMicrosoftエコシステムと密接に統合されています。 3)SQLSERVERは、パフォーマンスの最適化に優れた機能を果たし、メモリが最適化されたテーブルと列ストレージインデックスをサポートします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
