时间:2021-05-19
本文实例讲述了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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java泛型类与泛型方法的定义。分享给大家供大家参考,具体如下:Java泛型类的定义一点睛泛型类定义的语法如下:[访问修饰符]class类名称泛型
java泛型的详解及实例Java在1.5版本中增加了泛型,在没有泛型之前,从集合中读取每一个对象都需要进行强转,如果一不小心插入了类型错误的对象,在运行时就会报
SpringAOP切面解决数据库读写分离实例详解为了减轻数据库的压力,一般会使用数据库主从(master/slave)的方式,但是这种方式会给应用程序带来一定的
java操作mongo查询的实例详解前言:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
由于关系型数据库操作语言和面向对象语言之间的差异,如今我们仍然需要花费许多时间建立数据库与Java应用之间互相沟通的桥梁。通常,我们可以编写自己的映射层(map