JDBC的通用增删改查操作(MySQL, 反射)
JDBC的通用增删改查操作(MySQL, 反射)
获取数据库连接
将jdbc先加入到项目工程的build path里面
书写配置文件, 数据与代码分离.
1 | url=jdbc:mysql://localhost:3306/database |
- 读取配置文件封装获取连接方法
- 因为每次都要用到获取数据库连接的这个操作, 我们将其封装到一个类中作为静态方法出现.
1 | public static Connection getConnection(){ |
数据库的更新: 增删改
- 使用PreparedStatement进行数据库的增删改
- 使用PreparedStatement预编译SQL语句, 使得Statement的SQL注入问题修复
- 对于增删改来说, 在我们执行delete, insert, update 之后只有返回true/false, 所以我们可以将这三种写在同一个方法中, 可以带返回值, 也可以不带返回值, 这里我们不带返回值
1 | /** |
数据库查询(反射)
- 数据库查询操作不同于, 增删改, 查询操作会有一个返回结果的操作, 所以我们与增删改分开来写
- 除了有返回结果之外, 对于不同的查询, 我们返回的结果集的类型处理方式也不尽相同
- 我们这里使用反射, 来动态的处理我们返回的结果集, 具体操作见代码.
1 | /** |
- 对于上述方法的一些说明
- 在上述方法中我们使用了泛型方法, 主要是为了处理对于不同的数据表的Java Bean, 产生的不同的结果集的情况. 注意: 不要忘了返回值中的通配符<T>哦
- 在处理结果集的时候我们使用了结果集的元数据, 更方便的处理数据, 也方便下边的反射动态的设置值
- 在处理结果集中的数据的时候我们使用了反射动态设置新对象的各个值. 值得注意的是, 我们的SQL语句的占位符和结果集中的各个数据的第一数据的下标均为1, 所以,我们在进行循环的时候, 使用的index为i + 1
总结
- 数据库的增删改查, 分为两大类, 一类是没有产生结果集的增删改, 另一类是有结果集的查询操作
- 替换占位符和处理查询的结果集的时候, 下边从1开始, 不同于以往的从0开始(同一个老外, 不同的下标)
- 在我们jdk1.8的新特性出现了try_with_resources的方法来替换了原来的try_catch_finally以达到自动关闭流的操作. 极大的方便了我们的使用. 但是我们的这个Connection 和 PreparedStatement以及ResultSet不可以再被分配/指定, 因此我们关闭的时候还是按照传统的关闭流的方法.
- 另外, 使用try_with_resources自动关闭流的操作必须实现java.lang.AutoCloseable接口
完整代码
JDBCUtils
- JDBC工具类, 实现了获取连接以及关闭流的操作
1 |
|
Update & Query
实现了更新以及查询操作
1 | /** |
- 说明:
- 以上的测试方法中, 请自定义sql以及占位符的替换
如有错误, 请联系我
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Lutong99!
评论


