Java泛型与数据库应用实例详解

 更新时间:2019年08月06日 11:00:09   作者:cakincqm  
这篇文章主要介绍了Java泛型与数据库应用,结合实例形式详细分析了java继承泛型类实现增删改查操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了Java泛型与数据库应用。分享给大家供大家参考,具体如下:

一 点睛

BaseDao定义了基本的数据库增删查改, 之后可以继承该泛型类,实现各自的增删查改,或者使用超类的增删查改,同时每个继承类还能增加自己的操作。

二 实战

1 BaseDao.java

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class BaseDao<T> {
  Connection connection;
  PreparedStatement pStatement;
  String urlString = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF8";
  String drivString = "com.mysql.jdbc.Driver";
  void OpenDB() {
    try {
      if (connection == null) {
        Class.forName(drivString);
        this.connection = DriverManager.getConnection(urlString, "root", "123456");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  void CloseDB() {
    try {
      if (pStatement != null) pStatement.close();
      if (connection != null) connection.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public void Save( T t ) {
    OpenDB();
    String table = "";
    String sqlString = "insert into ";
    try {
      table = t.getClass().getSimpleName();
      Field[] fields = t.getClass().getDeclaredFields();
      sqlString += table;
      String sqlNameString = "";
      String sqlValString = "";
      for (Field field : fields) {
        sqlNameString += field.getName() + ",";
        sqlValString += "?,";
      }
      sqlNameString = sqlNameString.substring(0, sqlNameString.length() - 1);
      sqlValString = sqlValString.substring(0, sqlValString.length() - 1);
      pStatement = connection.prepareStatement(sqlString + " (" + sqlNameString + ") values (" + sqlValString + ")");
      int n = 1;
      for (Field field : fields) {
        field.setAccessible(true);
        System.out.println(field.get(t).toString());
        pStatement.setString(n, field.get(t).toString());
        n++;
      }
      pStatement.executeUpdate();
      CloseDB();
    } catch (Exception e) {
      e.printStackTrace();
      CloseDB();
    }
  }
  public void Del( T t ) {
  }
  public void Update( T t ) {
  }
  public void Search( T t ) {
  }
}

2 StudentDao.java

public class StudentDao extends BaseDao<Student> {
}

3 TeacherDao.java

public class TeacherDao extends BaseDao<Teacher> {
}

4 Student.java

public class Student {
  public String name;
  public int age;
  public String dept;
  /**
  * @return the name
  */
  public String getName() {
   return name;
  }
  /**
  * @param name the name to set
  */
  public void setName(String name) {
   this.name = name;
  }
  /**
  * @return the age
  */
  public int getAge() {
   return age;
  }
  /**
  * @param age the age to set
  */
  public void setAge(int age) {
   this.age = age;
  }
  /**
  * @return the dept
  */
  public String getDept() {
   return dept;
  }
  /**
  * @param dept the dept to set
  */
  public void setDept(String dept) {
   this.dept = dept;
  }
}

5 Teacher.java

public class Teacher {
}

6 TestDao.java

public class TestDao {
  public static void main(String[] args) {
   System.out.println("ok");
   Student stud=new Student();
   stud.age=20;
   stud.name="zhangsan";
   stud.dept="computer";
   StudentDao sd=new StudentDao();
   sd.Save(stud);
   System.out.println(stud.dept);
  }
}

三 运行

ok
zhangsan
20
computer
computer

四 怎样在IDEA中导入jar包

可参考附录:IDEA连接数据库(导入jar包)

五 另外一种写法

StudentDao.java

public class StudentDao<M> extends BaseDao<M> {    // 这里的M可以是任意合法标识符
}

TestDao.java

public class TestDao {
 public static void main(String[] args) {
 System.out.println("ok");
 Student stud=new Student();
 stud.age=20;
 stud.name="zhangsan2";
 stud.dept="computer";
 StudentDao<Student> sd=new StudentDao<>();  // 这里要说明是Student
 sd.Save(stud);
 System.out.println(stud.dept);
 TeacherDao<Teacher> te= new TeacherDao<>();
 }
}

附:IDEA连接数据库(导入jar包)

Java连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到jar库文件,然后在对应的项目中导入该库文件。

IDEA导入jar过程:新建文件夹(名称任意,这里使用Lib),导入mysql-connector-java-*.*.**-bin.jar如下图

右键点击jar文件,然后点击Add as Library,jar导入成功。后面百度java使用mysql即有详细的访问mysql的代码。

ecplice导入jar过程:新建文件夹(名称任意,这里使用Lib),导入mysql-connector-java-*.*.**-bin.jar如下图

右键-》buildpath-》add to build path

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • IDEA-Maven环境配置及使用教程

    IDEA-Maven环境配置及使用教程

    这篇文章主要为大家详细介绍了IDEA-Maven环境配置及使用教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Java编程实现暴力破解WIFI密码的方法分析

    Java编程实现暴力破解WIFI密码的方法分析

    这篇文章主要介绍了Java编程实现暴力破解WIFI密码的方法,结合具体实例形式分析了java暴力破解WiFi密码的原理、操作步骤、实现技巧与相关注意事项,需要的朋友可以参考下
    2018-12-12
  • Java HashMap详解及实现原理

    Java HashMap详解及实现原理

    Java HashMap是Java集合框架中最常用的实现Map接口的数据结构,它使用哈希表实现,允许null作为键和值,可以存储不同类型的键值对,在Java中,HashMap被广泛应用于各种场景,如缓存、数据库连接池、路由器等,文中有详细的代码示例,需要的朋友可以参考下
    2023-05-05
  • Java concurrency线程池之线程池原理(三)_动力节点Java学院整理

    Java concurrency线程池之线程池原理(三)_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Java concurrency线程池之线程池原理第三篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java中BigDecimal的加减乘除、比较大小与使用注意事项

    Java中BigDecimal的加减乘除、比较大小与使用注意事项

    对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作,下面这篇文章给大家介绍了Java中BigDecimal的加减乘除、比较大小与使用注意事项,需要的朋友可以参考下。
    2017-11-11
  • SpringBoot整合Xxl-job实现定时任务的全过程

    SpringBoot整合Xxl-job实现定时任务的全过程

    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,下面这篇文章主要给大家介绍了关于SpringBoot整合Xxl-job实现定时任务的相关资料,需要的朋友可以参考下
    2022-01-01
  • Spring Boot2如何构建可部署的war包

    Spring Boot2如何构建可部署的war包

    这篇文章主要介绍了Spring Boot2如何构建可部署的war包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java+Redis撤销重做功能实现

    Java+Redis撤销重做功能实现

    这篇文章主要介绍了Java+Redis实现撤销重做功能,需要考虑撤销的最大步数,撤销之后穿插着其他操作则不能再重做,所以引入分布式锁Redisson进行加锁处理,防止对图表的操作有并发请求导致处理撤销逻辑混乱,感兴趣的朋友跟随小编一起看看吧
    2023-05-05
  • Springboot中的异步任务执行及监控详解

    Springboot中的异步任务执行及监控详解

    这篇文章主要介绍了Springboot中的异步任务执行及监控详解,除了自己实现线程外,springboot本身就提供了通过注解的方式,进行异步任务的执行,下面主要记录一下,在Springboot项目中实现异步任务,以及对异步任务进行封装监控,需要的朋友可以参考下
    2023-10-10
  • 基于Java实现Json文件转换为Excel文件

    基于Java实现Json文件转换为Excel文件

    这篇文章主要为大家详细介绍了如何利用Java实现Json文件转换为Excel文件,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-12-12

最新评论