/prepre package trade.axht.java.dao;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.dbutils.QueryRunner;import trade.axht.java.conn.JDBCUtils;import java.util.*;import java.lang.reflect.*;import java.sql.*;/** * *基
package trade.axht.java.dao; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.dbutils.QueryRunner; import trade.axht.java.conn.JDBCUtils; import java.util.*; import java.lang.reflect.*; import java.sql.*; /** * *基类带泛型,派生类可以带泛型参数继承该类,通过反射对Beans对象操作 * @author Administrator * * @param <t> */ public class DAO<t> {//带泛型的基类,派生类可以带具体beans泛型参数继承该类 public Class<t> clazz; @SuppressWarnings({ "unchecked", "rawtypes" }) public DAO(){ System.out.println(getClass()); //打印class trade.axht.java.dao.userImpl.****DaoImpl Type type=getClass().getGenericSuperclass(); System.out.println(type); /**获取继承【该类(DAO<t>)】带具体泛型的基类 或者获取此类的基类(Object),简单的讲就是谁继承Dao<t>这个类后,在加载的时候,就会来加载这个构造函数。加载class的对象为Dao<t>的派生类。派生类的基类就是Dao<t>,并能获取基类带有的具体泛型。 JDK文档描述是这样的:返回表示此Class所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果超类是参数化类型,则返回的对象必须准确反映源///代码中所使用的实际类型参数。 所以最终打印为**/ ParameterizedType parameterizedType=(ParameterizedType)type;//ParameterizedType 表示参数化类型,如 Collection<string>。 System.out.println(parameterizedType); Type[] ars=parameterizedType.getActualTypeArguments();/**返回表示此类型实际类型参数的对象的数组。就是返回Collection<t>中的泛型参数T,V类型的Type表示形式。Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。**/ System.out.println(ars); clazz=(Class) ars[0];//获取泛型参数的第一个Class对象 System.out.println(clazz); // System.out.println(clazz); } /** * 增,删,改操作 * @param sql * @param args * @return */ public int executeUpdate(String sql,Object...args){ Connection connection=JDBCUtils.getConnection(); PreparedStatement preparedStatement=null; try { preparedStatement=connection.prepareStatement(sql); if(args!=null&&args.length>0){ for(int i=0;i<args.length preparedstatement.setobject args return preparedstatement.executeupdate catch e todo auto-generated block e.printstacktrace jdbcutils.releaseconnection preparedstatement null clazz sql public list> getForList(String sql, Object... args) { List<t> list = new ArrayList(); Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //1. 得到结果集 connection = JDBCUtils.getConnection(); preparedStatement = connection.prepareStatement(sql); if(args!=null&&args.length>0){ for (int i = 0; i > values = handleResultSetToMapList(resultSet); //3.把List<map>> 转化成Class对象(clazz)的实例集List<t> list = transfterMapListToBeanList( values); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.releaseConnection(connection,preparedStatement,resultSet); } return list; } public List<t> transfterMapListToBeanList(List<map object>> values) throws InstantiationException, IllegalAccessException, InvocationTargetException { List<t> result = new ArrayList(); T bean = null; if (values.size() > 0) { for (Map<string object> m : values) { bean = clazz.newInstance(); for (Map.Entry<string object> entry : m.entrySet()) { String propertyName = entry.getKey(); Object value = entry.getValue(); //利用org.apache.commons.beanutils.BeanUtils工具类反射设置对象属性 BeanUtils.setProperty(bean, propertyName, value); /* try { ReflectorUtil.setProperty(bean, propertyName, value); } catch (NoSuchFieldException | SecurityException | IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ } result.add(bean); } } return result; } public List<map object>> handleResultSetToMapList( ResultSet resultSet) throws SQLException { List<map object>> values = new ArrayList(); //获取列名 List<string> columnLabels = getColumnLabels(resultSet); Map<string object> map = null; while (resultSet.next()) { map = new HashMap(); for (String columnLabel : columnLabels) { Object value = resultSet.getObject(columnLabel); map.put(columnLabel, value); } values.add(map); } return values; } private List<string> getColumnLabels(ResultSet rs) throws SQLException { List<string> labels = new ArrayList(); ResultSetMetaData rsmd = rs.getMetaData(); for (int i = 0; i 0){ for(int i=1;i<br> <br> <p>定义ManagerDaoImpl,该类继承与Dao</p> <p></p> <pre code_snippet_id="1676743" snippet_file_name="blog_20160509_9_8230022" name="code" class="html">package trade.axht.java.dao.userImpl; import trade.axht.java.dao.DAO; import trade.axht.java.dao.ManagerDAO; import trade.axht.java.domain.Manager; public class ManagerDaoImpl extends DAO<manager> { @Override public int getCount(Manager manager) { // TODO Auto-generated method stub String sql="select Count(*) from tb_manager where username=? and password=?"; return getCount(sql, manager.getUsername(),manager.getPassword()); } } </manager>
package trade.axht.java.domain; public class Manager { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Manager() { super(); // TODO Auto-generated constructor stub } public Manager(int id, String username, String password) { super(); this.id = id; this.username = username; this.password = password; } }
数据库连接操作类
package trade.axht.java.conn; import javax.sql.*; import java.sql.*; import java.util.*; import java.io.*; public class JDBCUtils { private static DataSource dataSource=null; static{ Properties properties=new Properties(); InputStream in=JDBCUtils.class.getClassLoader().getResourceAsStream("dbcp.properties");//加载配置文件 try { <span style="white-space:pre"> </span>properties.load(in); dataSource=org.apache.commons.dbcp2.BasicDataSourceFactory.createDataSource(properties);//利用数据库连接池(dbcp2)获取数据源 } catch (Exception e) { // TODO Auto-generated catch block System.out.println("数据库连接出错!"); e.printStackTrace(); } } public static Connection getConnection(){ try { return dataSource.getConnection(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } public static void releaseConnection(Connection connection,Statement statement,ResultSet resultSet) { if (connection!=null) { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (statement!=null) { try { statement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (resultSet!=null) { try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
数据库配置文件 jdcp.properties
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/blog username=root password=brozer initialSize=5 maxIdle=10 maxTotal=50 maxWaitMillis=5000 minIdle=5
导入的包

Innodbbufferpoolは、データをキャッシュしてページをインデックス作成することにより、ディスクI/Oを削減し、データベースのパフォーマンスを改善します。その作業原則には次のものが含まれます。1。データ読み取り:Bufferpoolのデータを読む。 2。データの書き込み:データを変更した後、bufferpoolに書き込み、定期的にディスクに更新します。 3.キャッシュ管理:LRUアルゴリズムを使用して、キャッシュページを管理します。 4.読みメカニズム:隣接するデータページを事前にロードします。 BufferPoolのサイジングと複数のインスタンスを使用することにより、データベースのパフォーマンスを最適化できます。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

MySQLは、データストレージ、管理、分析に適した強力なオープンソースデータベース管理システムであるため、学習する価値があります。 1)MySQLは、SQLを使用してデータを操作するリレーショナルデータベースであり、構造化されたデータ管理に適しています。 2)SQL言語はMySQLと対話するための鍵であり、CRUD操作をサポートします。 3)MySQLの作業原則には、クライアント/サーバーアーキテクチャ、ストレージエンジン、クエリオプティマイザーが含まれます。 4)基本的な使用には、データベースとテーブルの作成が含まれ、高度な使用にはJoinを使用してテーブルの参加が含まれます。 5)一般的なエラーには、構文エラーと許可の問題が含まれ、デバッグスキルには、構文のチェックと説明コマンドの使用が含まれます。 6)パフォーマンスの最適化には、インデックスの使用、SQLステートメントの最適化、およびデータベースの定期的なメンテナンスが含まれます。

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

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