В разработке мы часто используем пулы соединений базы данных, такие как пулы соединений базы данных DBCP. В этой главе будет объяснено простое использование пулов соединений с базами данных DBCP Java Connection.
Инструменты разработки myeclipse2014
1. Сначала создайте веб -проект. Я назвал название проекта TestJdbc. Мне нужен файл конфигурации с Web.xml, чтобы настроить сервис. После завершения создания структура проекта выглядит следующим образом:
2. Создайте пакет. Имя пакета, которое я создал, является com.szkingdom.db
3. Создайте кастил класса справки, код выглядит следующим образом:
пакет com.szkingdom.db; /*** Создано Джеком 2015/12/26. * Класс операции преобразования*/ открытый класс castutil {/** преобразовать в тип строки**/ public Static String Caststring (Object obj) {return castutil.castString (obj, ""); } / * * Преобразовать в строку типа (предоставление значения по умолчанию) * * / public Static String Caststring (Object obj, String defaultValue) {return obj! = Null? String.valueof (obj): defaultValue; } / * * Преобразовать в двойной тип * * / public static Double Castdouble (Object obj) {return Castdouble (obj, (Double) 0); } / * * Преобразовать в двойной тип (предоставленное значение по умолчанию) * * / public static Double Castdouble (Object obj, Double defaultValue) {Double DoubleValue = defaultValue; if (obj! = null) {string strvalue = caststring (obj); if (stringutil.isnotempty (strvalue)) {try {doublevalue = double.parsedouble (strvalue); } catch (numberFormateXception e) {defaultValue = defaultValue; }}} вернуть DoubleValue; } / * * Преобразовать в длинный тип * * / public Static Long Castlong (Object obj) {return Castlong (obj, 0); } / * * Преобразовать в длинный тип (предоставленное значение по умолчанию) * * / public static long castlong (объект obj, long defaultvalue) {long longvalue = defaultValue; if (obj! = null) {string strvalue = caststring (obj); if (stringutil.isnotempty (strvalue)) {try {longvalue = long.parselong (strvalue); } catch (numberFormateXception e) {longvalue = defaultValue; }} вернуть longvalue; } / * * Преобразовать в тип int * * / public static int castint (Object obj) {return castint (obj, 0); } / * * Преобразовать в тип int (предоставление значения по умолчанию) * * / public static int castint (Object obj, int defaultValue) {int intvalue = defaultValue; if (obj! = null) {string strvalue = caststring (obj); if (stringutil.isnotempty (strvalue)) {try {intvalue = integer.parseint (strvalue); } catch (numberFormateXception e) {intValue = defaultValue; }}} вернуть Intvalue; } / * * Преобразовать в логический тип * * / public Static Boolean Castboolean (Object obj) {return Castboolean (obj, false); } / * * Конвертировать в логический тип (предоставляет значение по умолчанию) * * / public static boolean castboolean (Object obj, boolean defaultValue) {Boolean BooleanValue = defaultValue; if (obj! = null) {booleanvalue = boolean.parseboolean (Caststring (obj)); } return booleanValue; }} 4. Создайте файл свойства для чтения Propsutil Class Class, код заключается в следующем:
пакет com.szkingdom.db; Импорт java.io.filenotFoundException; импортировать java.io.ioexception; импортировать java.io.inputstream; импортировать java.util.properties; /*** Создано Джеком 2015/12/26. * Properties File Class класс*/propsutil propsutil {// private static final logger = loggerfactory.getLogger (propsutil.class); / * * Загрузка файла свойств * * */ public static Properties LoadProps (String FileName) {Properties Properties = null; InputStream inputStream = null; try {inputStream = thread.currentThread (). getContextClassLoader (). getResourCeasStream (filename); if (inputstream == null) {добавить новый файл filenotfoundexception (файл файла + "не найден!"); } свойства = новые свойства (); Свойства.load (inputStream); } catch (ioException e) {//logger.error("fold file file fail ", e); System.out.println ("Свойства нагрузки файла:"+e); } наконец {if (inputStream! = null) {try {inputStream.close (); } catch (ioException e) {//logger.error("close входной поток », E); System.out.println ("Закрыть сбой потока ввода:"+e); }} return Properties; } / * * Получить атрибуты символа (по умолчанию - пустая строка) * * * / public static String getString (Properties props, String Key) {return getString (ops, key, ""); } / * * Получить атрибуты типа символа (значение по умолчанию может быть указано) * * / public Static String getString (Properties props, String Key, String defaultValue) {String Value = defaultValue; if (props.containskey (key)) {value = props.getproperty (key); } return value; } / * * Получить атрибуты численного типа (по умолчанию 0) * * / public static int getInt (Properties props, String Key) {return getInt (ops, key, 0); } / * * Получить атрибут численного типа (можно указать значение по умолчанию) * * / public static int getInt (Properties props, String Key, int defaultValue) {int value = defaultValue; if (props.containskey (key)) {value = castutil.castint (props.getProperty (key)); } return value; } / * * Получить логическое свойство (значение по умолчанию является false) * * / public static boolean getboolean (Properties reps, string key) {return getBoolean (ops, key, false); } / * * Получить логическое свойство (можно указать значение по умолчанию) * * / public static boolean getboolean (Properties props, String Key, Boolean DefaultValue) {Boolean Value = defaultValue; if (props.containskey (key)) {value = castutil.castboolean (props.getProperty (key)); } return value; }} 5. Создать строковую справочную справочную справку StringUtil, код следующим образом:
пакет com.szkingdom.db; /*** Создано Джеком 2015/12/26. * Class Tool Class */ Public Class StringUtil {/ * * Определить, пуста ли строка * */ public Static Boolean Isempty (String Str) {if (str! = Null) {str = str.trim (); } // return stringUtils.isempty (str); вернуть "". equals (str); } / * * Определите, не пуста ли строка * * / public static boolean isnotempty (string str) {return! Isempty (str); }} 6. Создайте файл свойства свойства подключения к базе данных dbconfig.properties в каталоге SRC
<span style = "color:#3333333;"> jdbc.driver = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: // </span> <span style = "color:#ff6666; фоновое цвета: rgb (255, 0, 0); style = "color:#333333;"> jdbc.username = **** jdbc.password = **** </span>
7. Поместите необходимые пакеты JAR в каталог LIB:
8. Создайте класс справочных данных базы данных с помощью DBCP
пакет com.szkingdom.db; импортировать java.io.bytearrayinputstream; Импорт java.sql.connection; Импорт java.sql.drivermanager; Импорт java.sql.preparedStatement; импортировать java.sql.resultset; Импорт java.sql.sqlexception; импортировать java.util.properties; Импорт org.apache.commons.dbcp2.basicdatasource; /*** Создано Джеком 2015/12/26. Операция базы данных Assistant Class*/ Public Class DatabaseHelper {// Private Static Final Logger logger = // loggerFactory.getLogger (databaseHelper.class); частный статический драйвер финальной строки; частная статическая конечная строка URL; частная статическая финальная строка имени пользователя; частный статический пароль окончательной строки; // Убедитесь, что один поток и одно соединение, безопасное для потока частного статического окончательного последнего потока Threadlocal <nectation> connection_holder; // Пул потоков Private Static Final BasicDatasource data_source; static {connection_holder = new Threadlocal <Neply> (); Свойства conf = propsutil.loadprops ("dbconfig.properties"); Driver = conf.getProperty ("jdbc.driver"); Url = conf.getProperty ("jdbc.url"); Username = conf.getProperty ("jdbc.username"); Пароль = conf.getProperty ("jdbc.password"); String Driver = conf.getProperty ("jdbc.driver"); String url = conf.getProperty ("jdbc.url"); String username = conf.getProperty ("jdbc.username"); String passwrod = conf.getProperty ("jdbc.password"); Data_source = new BasicDatasource (); Data_source.setdriverclassname (Driver); Data_source.seturl (url); Data_source.setusername (имя пользователя); Data_source.setpassword (passwrod); // Конфигурация параметра подключения к базе данных: http://www.cnblogs.com/xdp-gacl/p/4002804.html //http://greemranqq.iteye.com/blog/1969273 //http://blog.csdn.net/j903829182/Article/details/50190337 //http://blog.csdn.net/jiutianhe/article/details/39670817 //http://bsr193.3.iteye.comeeee.comeeee.comeye.comeye.comeye.comeye.comeye..comeye..com //http://blog.csdn.net/kerafan/article/details/50382998 //http://blog.csdn.net/a9529lty/article/details/43021801 /// Установите максимальное общее количество именных соединений, а также может быть активированным временем. Data_source.setmaxtotal (60); // Установить начальный размер data_source.setinitialsize (10); // Минимальное соединение холостого хода data_source.setminidle (8); // максимальное соединение холостого хода data_source.setmaxidle (16); // время ожидания тайм -аута Milliseconds data_source.setmaxwaitmillis (2*10000); // Только текущее соединение является недействительным, создайте другое соединение для текущего запроса для использования data_source.settestonbourrow (true); // removeAbadonItimeout: утилизация неиспользованных (отсутствующих) соединений (по умолчанию составляет 300 секунд, скорректирована до 180) Data_Source.SetRemoveAbandOneTimeout (180); //removeAbandoned: After the time of removeAbandonedTimeout exceeds the time of removeAbandonedTimeout, whether to recycle unused (absent) connections (default is false, adjusted to true) //DATA_SOURCE.setRemoveAbandonedOnMaintenance(removeAbandonedOnMaintenance); Data_source.setRemoveabandoNoonborrow (true); // testWhileIdle DATA_SOURCE.SETTESTONRETURN (TRUE); // testonReturn data_source.settestonreturn (true); // setRemoveAbandoNemondomepantement Data_Source.SetRemoveAbandOneonMaintion (TRUE); // запись журнала data_source.setlogabandoned (true); // setAddress Автоматическое представление data_source.setDefaultautocommit (true); // data_source.setenableautocommitonreturn (true); System.out.println («Заполните настройку параметра пула соединений базы данных data_source !!»); /*try {class.forname (Driver); System.out.println («Загрузите успех драйвера JDBC»); } catch (classnotfoundexception e) {// logger.error ("Не может загрузить драйвер jdbc", e); System.out.println ("Не может загрузить драйвер JDBC:" + e); } наконец {}*/} // private static final threadlocal <Neply> connection_holder = new Threadlocal <Connection> (); /*** Получить подключение к базе данных*/public Static Connection getConnection () {Connection connect = connection_holder.get (); // 1 if (conn == null) {try {// conn = drivermanager.getConnection (url, имя пользователя, пароль); conn = data_source.getConnection (); System.out.println («Получить успех подключения»); } catch (sqlexception e) {// logger.error ("получить сбой соединения", e); System.out.println («Получить сбой соединения:» + e); } наконец {/*SyStem.out.println ("Минимальное соединение холостого хода minidle ="+data_source.getminidle ()); System.out.println ("maxidle connection maxidle ="+data_source.getmaxidle ()); System.out.println ("Максимальное количество соединений maxtotal ="+data_source.getmaxtotal ()); System.out.println ("Начальный размер initialsize ="+data_source.getinitialsize ()); System.out.println ("Время ожидания тайм -аута maxwaitmillis ="+(data_source.getmaxwaitmillis ()/1000)); System.out.println ("Get Active Connects getNumActive () ="+data_source.getNumactive ()); System.out.println ("Получить количество соединений getNumIdle ="+data_source.getnumidle ());*/ connection_holder.set (conn); }} return conn; }/ *** Закройте соединение базы данных*/ public static void closeconnection () {connection connect = connection_holder.get (); // 1 if (conn! = Null) {try {conn.close (); System.out.println ("Close Connection Success"); } catch (sqlexception e) {// logger.error ("сбой закрытия соединения", e); System.out.println («Ошибка закрытия соединения:» + e); бросить новое runtimeexception (e); } наконец {connection_holder.remove (); }}} // Выполнить операции базы данных Public Static Synchronized void Update (int thlsh, String ltnr) {connection conn = getConnection (); if (conn == null) {System.out.println ("соединение () в методе обновления null !!"); } Подготовленный Statement pStmt = null; System.out.println ("Обновление Start!"); int ltlsh = 0; Попробуйте {// string sql = "Сообщение об обновлениях Сообщение =? Где id =?"; // string sql1 = "Выберите ltlsh из t_zxthlsk, где lsh =?"; String sql = "Обновление t_wx_ltnrk b set b.ltnr =? Где b.lsh ="+ "(выберите a.ltlsh из t_zxthlsk a, где a.lsh =?)"; System.out.println («Обновленный оператор SQL: SQL->»+SQL); pstmt = conn.prepareStatement (SQL); PSTMT.SetBlob (1, New BytearRayinputStream (ltnr.getbytes ())); pstmt.setint (2, thlsh); /*pstmt.setString(1, "Это тест DBCP2 2222"); pstmt.setint (2, 6);*/if (pstmt.executeupdate ()> 0) {//system.out.println("update данные с id = 1 успешно! »); System.out.println («Обновите данные содержимого чата thlsh =»+thlsh+»успешно!/N Содержимое чата:»+ltnr); } //conn.commit (); /*while(rs1.next ()) {ltlsh = rs1.getint ("ltlsh"); System.out.println ("Запрос номер потока чата успешно, номер потока чата-ltlsh->"+ltlsh); }*///pstmt.setString(1, "Отличное обновление контента1"); //pstmt.setint(2, 1); //pstmt.setblob(1, New Bytearrayinputstream ("12345 China" .getbytes ()); //pstmt.setint(2, 76732); /*if(pstmt.executeUpdate ()> 0) {//system.out.println("update данные с id = 1 успешно! »); System.out.println («Обновление данных с id = 76732 успешно!»); } conn.commit ();*/ system.out.println ("Обновление t_wx_ltnrk успех"); } catch (sqlexception e) {//logger.error("query sist intity affect ", e); System.out.println ("Обновление данных исключения данных connection ="+conn); System.out.println ("Обновление t_wx_ltnrk сбой:" + e); бросить новое runtimeexception (e); } наконец {// roleconnection (); // closeConnection (); if (pstmt! = null) {try {pstmt.close (); } catch (sqlexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); System.out.println ("PrectionStatement не удалось"); }} if (conn! = null) {try {conn.close (); } catch (sqlexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} // Удалить соединение в потоке. Если соединение не удалено, полученное соединение будет закрыто. Операция данных не может быть выполнена. Connection_holder.remove (); // closeConnection (); } // return EntityList; }} 9. Создан базовый пул соединений базы данных. После этого вы можете смоделировать подключение к базе данных с помощью метода обновления базы данных для моделирования операции получения подключений к базе данных и выполнения операций данных в соответствии с вашими собственными потребностями.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.