27
27
*/
28
28
public class BasicDao {
29
29
30
+ //加载Nutz所支持的数据库的驱动!!
31
+ static {
32
+ String [] drivers = {"org.h2.Driver" ,
33
+ "com.ibm.db2.jcc.DB2Driver" ,
34
+ "org.hsqldb.jdbcDriver" ,
35
+ "oracle.jdbc.OracleDriver" ,
36
+ "org.postgresql.Driver" ,
37
+ "net.sourceforge.jtds.jdbc.Driver" ,
38
+ "com.microsoft.sqlserver.jdbc.SQLServerDriver" ,
39
+ "org.sqlite.JDBC" ,
40
+ "com.mysql.jdbc.Driver" ,
41
+ "com.beyondb.jdbc.BeyondbDriver" };
42
+ for (String driverClassName : drivers ) {
43
+ try {
44
+ Class .forName (driverClassName );
45
+ } catch (Throwable e ) {
46
+ }
47
+ }
48
+ }
49
+
30
50
@ Inject
31
51
protected Dao dao ;
32
52
private HikariDataSource ds ;
33
53
34
54
public BasicDao (String jdbcUrl , String username , String password ) {
35
55
ds = new HikariDataSource ();
56
+ ds .setDriverClassName (getDriverClassName (jdbcUrl ));
57
+ ds .setJdbcUrl (jdbcUrl );
58
+ ds .setUsername (username );
59
+ ds .setPassword (password );
60
+ this .dao = new NutDao (ds );
61
+ }
62
+
63
+ public BasicDao (String driverClassName , String jdbcUrl , String username , String password ) {
64
+ ds = new HikariDataSource ();
65
+ ds .setDriverClassName (driverClassName );
36
66
ds .setJdbcUrl (jdbcUrl );
37
67
ds .setUsername (username );
38
68
ds .setPassword (password );
@@ -320,10 +350,8 @@ public <T> List<T> searchByPage(Class<T> c, String fieldName, String value, int
320
350
* 分页带条件查询所有数据
321
351
*
322
352
* @param <T>
323
- * @param c 查询的表
324
- * @param condition 查询条件,用Cnd的静态方法构造
325
- * @param currentPage 当前页码
326
- * @param pageSize 每页显示的数据量
353
+ * @param c 查询的表
354
+ * @param condition 查询条件,用Cnd的静态方法构造
327
355
* @return List
328
356
*/
329
357
public <T > List <T > searchByPage (Class <T > c , Condition condition , Pager pager ) {
@@ -406,7 +434,7 @@ public <T> void deleteWidth(T t, String fieldName) {
406
434
* 根据指定条件删除对象
407
435
*
408
436
* @param <T>
409
- * @param Condition 匹配条件
437
+ * @param con 匹配条件
410
438
* @return int
411
439
*/
412
440
public <T > int delByCondition (Class <T > c , Condition con ) {
@@ -605,8 +633,6 @@ public List<Record> query(String tableName, Cnd cnd) {
605
633
/**
606
634
* 无pojo查询记录
607
635
*
608
- * @param tableName
609
- * @param cnd
610
636
* @return
611
637
*/
612
638
@ SuppressWarnings ("unchecked" )
@@ -629,8 +655,7 @@ public List<Record> invoke(Connection conn, ResultSet rs, Sql sql) throws SQLExc
629
655
/**
630
656
* 无pojo查询记录
631
657
*
632
- * @param tableName
633
- * @param cnd
658
+ * @param sqlStr
634
659
* @return
635
660
*/
636
661
public Record selectOne (String sqlStr ) {
@@ -662,6 +687,117 @@ public void close() {
662
687
}
663
688
}
664
689
690
+ private static Boolean mysql_driver_version_6 = null ;
691
+
692
+ public static String getDriverClassName (String rawUrl ) {
693
+ if (rawUrl == null ) {
694
+ return null ;
695
+ }
696
+
697
+ if (rawUrl .startsWith ("jdbc:derby:" )) {
698
+ return "org.apache.derby.jdbc.EmbeddedDriver" ;
699
+ } else if (rawUrl .startsWith ("jdbc:mysql:" )) {
700
+ if (mysql_driver_version_6 == null ) {
701
+ try {
702
+ mysql_driver_version_6 = Class .forName ("com.mysql.cj.jdbc.Driver" ) != null ;
703
+ } catch (ClassNotFoundException e ) {
704
+ mysql_driver_version_6 = false ;
705
+ }
706
+ }
707
+
708
+ if (mysql_driver_version_6 ) {
709
+ return "com.mysql.cj.jdbc.Driver" ;
710
+ } else {
711
+ return "com.mysql.jdbc.Driver" ;
712
+ }
713
+ } else if (rawUrl .startsWith ("jdbc:log4jdbc:" )) {
714
+ return "net.sf.log4jdbc.DriverSpy" ;
715
+ } else if (rawUrl .startsWith ("jdbc:mariadb:" )) {
716
+ return "org.mariadb.jdbc.Driver" ;
717
+ } else if (rawUrl .startsWith ("jdbc:oracle:" ) //
718
+ || rawUrl .startsWith ("JDBC:oracle:" )) {
719
+ return "oracle.jdbc.OracleDriver" ;
720
+ } else if (rawUrl .startsWith ("jdbc:alibaba:oracle:" )) {
721
+ return "com.alibaba.jdbc.AlibabaDriver" ;
722
+ } else if (rawUrl .startsWith ("jdbc:microsoft:" )) {
723
+ return "com.microsoft.jdbc.sqlserver.SQLServerDriver" ;
724
+ } else if (rawUrl .startsWith ("jdbc:sqlserver:" )) {
725
+ return "com.microsoft.sqlserver.jdbc.SQLServerDriver" ;
726
+ } else if (rawUrl .startsWith ("jdbc:sybase:Tds:" )) {
727
+ return "com.sybase.jdbc2.jdbc.SybDriver" ;
728
+ } else if (rawUrl .startsWith ("jdbc:jtds:" )) {
729
+ return "net.sourceforge.jtds.jdbc.Driver" ;
730
+ } else if (rawUrl .startsWith ("jdbc:fake:" ) || rawUrl .startsWith ("jdbc:mock:" )) {
731
+ return "com.alibaba.druid.mock.MockDriver" ;
732
+ } else if (rawUrl .startsWith ("jdbc:postgresql:" )) {
733
+ return "org.postgresql.Driver" ;
734
+ } else if (rawUrl .startsWith ("jdbc:edb:" )) {
735
+ return "com.edb.Driver" ;
736
+ } else if (rawUrl .startsWith ("jdbc:odps:" )) {
737
+ return "com.aliyun.odps.jdbc.OdpsDriver" ;
738
+ } else if (rawUrl .startsWith ("jdbc:hsqldb:" )) {
739
+ return "org.hsqldb.jdbcDriver" ;
740
+ } else if (rawUrl .startsWith ("jdbc:db2:" )) {
741
+ return "COM.ibm.db2.jdbc.app.DB2Driver" ;
742
+ } else if (rawUrl .startsWith ("jdbc:sqlite:" )) {
743
+ return "org.sqlite.JDBC" ;
744
+ } else if (rawUrl .startsWith ("jdbc:ingres:" )) {
745
+ return "com.ingres.jdbc.IngresDriver" ;
746
+ } else if (rawUrl .startsWith ("jdbc:h2:" )) {
747
+ return "org.h2.Driver" ;
748
+ } else if (rawUrl .startsWith ("jdbc:mckoi:" )) {
749
+ return "com.mckoi.JDBCDriver" ;
750
+ } else if (rawUrl .startsWith ("jdbc:cloudscape:" )) {
751
+ return "COM.cloudscape.core.JDBCDriver" ;
752
+ } else if (rawUrl .startsWith ("jdbc:informix-sqli:" )) {
753
+ return "com.informix.jdbc.IfxDriver" ;
754
+ } else if (rawUrl .startsWith ("jdbc:timesten:" )) {
755
+ return "com.timesten.jdbc.TimesTenDriver" ;
756
+ } else if (rawUrl .startsWith ("jdbc:as400:" )) {
757
+ return "com.ibm.as400.access.AS400JDBCDriver" ;
758
+ } else if (rawUrl .startsWith ("jdbc:sapdb:" )) {
759
+ return "com.sap.dbtech.jdbc.DriverSapDB" ;
760
+ } else if (rawUrl .startsWith ("jdbc:JSQLConnect:" )) {
761
+ return "com.jnetdirect.jsql.JSQLDriver" ;
762
+ } else if (rawUrl .startsWith ("jdbc:JTurbo:" )) {
763
+ return "com.newatlanta.jturbo.driver.Driver" ;
764
+ } else if (rawUrl .startsWith ("jdbc:firebirdsql:" )) {
765
+ return "org.firebirdsql.jdbc.FBDriver" ;
766
+ } else if (rawUrl .startsWith ("jdbc:interbase:" )) {
767
+ return "interbase.interclient.Driver" ;
768
+ } else if (rawUrl .startsWith ("jdbc:pointbase:" )) {
769
+ return "com.pointbase.jdbc.jdbcUniversalDriver" ;
770
+ } else if (rawUrl .startsWith ("jdbc:edbc:" )) {
771
+ return "ca.edbc.jdbc.EdbcDriver" ;
772
+ } else if (rawUrl .startsWith ("jdbc:mimer:multi1:" )) {
773
+ return "com.mimer.jdbc.Driver" ;
774
+ } else if (rawUrl .startsWith ("jdbc:dm:" )) {
775
+ return "dm.jdbc.driver.DmDriver" ;
776
+ } else if (rawUrl .startsWith ("jdbc:kingbase:" )) {
777
+ return "com.kingbase.Driver" ;
778
+ } else if (rawUrl .startsWith ("jdbc:gbase:" )) {
779
+ return "com.kingbase.Driver" ;
780
+ } else if (rawUrl .startsWith ("jdbc:xugu:" )) {
781
+ return "com.xugu.cloudjdbc.Driver" ;
782
+ } else if (rawUrl .startsWith ("jdbc:hive:" )) {
783
+ return "org.apache.hive.jdbc.HiveDriver" ;
784
+ } else if (rawUrl .startsWith ("jdbc:hive2:" )) {
785
+ return "org.apache.hive.jdbc.HiveDriver" ;
786
+ } else if (rawUrl .startsWith ("jdbc:phoenix:thin:" )) {
787
+ return "org.apache.phoenix.queryserver.client.Driver" ;
788
+ } else if (rawUrl .startsWith ("jdbc:phoenix://" )) {
789
+ return "org.apache.phoenix.jdbc.PhoenixDriver" ;
790
+ } else if (rawUrl .startsWith ("jdbc:kylin:" )) {
791
+ return "org.apache.kylin.jdbc.Driver" ;
792
+ } else if (rawUrl .startsWith ("jdbc:elastic:" )) {
793
+ return "com.alibaba.xdriver.elastic.jdbc.ElasticDriver" ;
794
+ } else if (rawUrl .startsWith ("jdbc:clickhouse:" )) {
795
+ return "ru.yandex.clickhouse.ClickHouseDriver" ;
796
+ } else {
797
+ throw new RuntimeException ("unkow jdbc driver : " + rawUrl );
798
+ }
799
+ }
800
+
665
801
@ Override
666
802
protected void finalize () throws Throwable {
667
803
super .finalize ();
0 commit comments