Java Web简明教程–Java篇[14]–数据库操作简化

简介: Java Web简明教程–Java篇[14]–数据库操作简化

上一篇中演示的代码中,有很多重复部分,比如针对每个实体类如StudentInfo、ClassInfo、RoomInfo,都要写逻辑基本上是一模一样的查询、更新、删除、添加方法。既然是重复,那么可以想办法提取规则,精简代码。


猫哥想到的,有两个方向。


第一种,既然读出来的都是数据库表格的内存映射,那么最简单的,我们可以定义一个类如下:


public class Table{
    String column1;
    String column2;
    ...
    String columnN。
}



N的取值比数据库表中列数最多的表的列数再多一点就行。这样不管我们怎么从数据库中联多少表,我们拿出数据之后就按顺序往Table类的column1、column2等变量里面放就行。而删除、修改、增加直接写sql语句就行了,也很方便。


说到这里,其实可以用List<Map<String, String>>来直接存储一个表的所有数据。例如,可以使用这样的List<Map<String, String>>来存储我们上一篇中查询出来的学生数据:

public static void main(String[] args) {//测试
    StudentOperation stuOper=new StudentOperation();
    List students=stuOper.selectAll();
    List<Map<String, String>> table=new ArrayList<Map<String, String>>();
    for(Object obj:students){
      StudentInfo stu=(StudentInfo)obj;
      Map<String, String> row = new HashMap<String, String>();
      row.put("姓名", stu.getStudentName());
      row.put("班级", stu.getStudentClass().getClassName());
      table.add(row);
    }
    System.out.println(table.toString());
  }

来看下输出:


[{姓名=火星人, 班级=一年级一班}, {姓名=霸王龙, 班级=一年级一班}, {姓名=赵柳, 班级=一年级二班}]

1

OK,识货的人一看就知道,实在是漂亮,当然我们既然有了List<Map<String, String>> 这个模拟类型,也就不必要自定义StudentInfo等类了,直接将ResultSet读出的东西赋值给List<Map<String, String>>类型对象保存即可。


到了这里,是不是感觉快完美了?其实还差得远了,有没有发现我们每个Map<String,String>对象里面都保存了列名(比如姓名、班级)。而真实世界中只需要保存一次列名就行了,所以是不是应该再封装?其实在C#世界里有一个DataTable类,就是完美模拟了数据库表在内存中的形态,有兴趣的可以自己看下功能,然后在Java上实现下。


第一个方向,纯粹是简化了部分代码量,但是不够优雅。为啥不够优雅,最直观的,Java是面向对象的,而前面相当于把对象都砍掉了,没有对象,那封装、多态等面向对象带来的好处也就不好享受了。所以还得想想其他出路。


其实也很好想,我们可以让类的名字与数据库表名字相同,然后让类里面属性的名字与数据库列名字相同,这样规则就很明显了,数据库的结构我们不清楚,但是我们可以通过类的结构得出数据库表结构,进而就可以操作数据库了,而类的结构可以通过反射来获取,这样来看,是不是问题就解决了。


还有表之间的关系呢…看来光靠类结构描述的不够啊,所以还可以借助其他的东西例如xml文件、例如Java注解来描述更多的类和数据库结构之间的关系。嗯,可想而知这样的东西自己封装是非常麻烦的。哈哈,但是现在有现成的框架,我们只需要按框架规则写代码就OK了,轻松而愉快。这一类的框架代表是Hibernate和Mybatis,在后续的系列中,猫哥会介绍MyBatis的使用。



相关文章
|
3天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
17天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
95 26
|
26天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
48 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
24天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
24天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
1月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
33 2
|
1月前
|
SQL 安全 网络安全
Web应用防火墙(WAF)与数据库应用防火墙有什么区别?
Web应用防火墙(WAF)专注于Web应用系统和网站的应用层防护,可有效应对OWASP Top 10等常见攻击,防止SQL注入、CC攻击等。而数据库应用防火墙则位于应用服务器与数据库之间,提供数据库访问控制、攻击阻断、虚拟补丁等高级防护功能,直接保护数据库免受攻击。两者分别针对Web层和数据库层提供不同的安全保护。
44 4
|
1月前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
59 6
|
23天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
42 0
|
29天前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。