-------前篇:手写DAO框架(一)-从“1”开始 ---------

前言:前篇主要介绍了写此框架的动机,把主要功能点大致介绍了一下。此篇文章主要介绍开发前最后的一些准备。主要包括一些基础知识点,和模块的拆分。

话说磨刀不误砍材工,知其然,还要只其所以然。因为很久没有学习相关的知识了,为了避免一些明显错误,所以先把相关基础知识了解一下。

(因个人水平有限,如有纰漏,还请指出)

基础知识点

一、Statement和PrepareStatement

1、PrepareStatement

a、预编译sql

需要手动开启

useServerPrepStmts=true

cachePrepStmts=true(缓存编译后的sql的key,保障不同ps执行sql不会重复编译)

b、防止sql注入(通过特殊字符过滤实现)

通过mysql日志查看是否进行了预编译

执行sql直接执行execute,则可以认为sql已经被编译了

只有ps关闭后,才会缓存函数key

二、mysql如果要预编译,需要开启预编译

三、数据库执行sql的流程

1、检查sql语句是否正确
  2、将sql语句编译成函数
  3、执行函数
  4、插入数据,获取主键

四、如何快速反序列化

1、反射
  2、内省
  3、自带的反序列化
  4、JSONObject反序列化

五、连接池功能

1、获取连接
  2、归还连接
  3、保存连接

模块拆分

一、连接

1、初始化
  2、配置文件初始化
  3、对象初始化
  4、获取连接
二、连接池
  1、获取连接
  2、归还连接
  3、连接有效性监测
三、基础查询封装
  1、插入返回id
四、ORM映射

完整详细信息如下:

下篇:手写DAO框架(三)-数据库连接

手写DAO框架(二)-开发前的最后准备的更多相关文章

  1. 手写DAO框架(三)-数据库连接

    -------前篇:手写DAO框架(二)-开发前的最后准备--------- 前言 上一篇主要是温习了一下基础知识,然后将整个项目按照模块进行了划分.因为是个人项目,一个人开发,本人采用了自底向上的开 ...

  2. 手写DAO框架(一)-从“1”开始

    背景: 很久(4年)之前写了一个DAO框架-zxdata(https://github.com/shuimutong/zxdata),这是我写的第一个框架.因为没有使用文档,我现在如果要用的话,得从头 ...

  3. 手写DAO框架(七)-如何保证连接可用

    版权声明:本文为博客园博主「水木桶」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明.原文链接:https://www.cnblogs.com/shuimutong/p ...

  4. 手写DAO框架(四)-SQL执行

    -------前篇:手写DAO框架(三)-数据库连接--------- 前言 通过上一篇写的方法,可以灵活的获取.释放数据库连接,拿到连接之后,我们就可以执行sql了!所以,本篇介绍的就是SQL执行器 ...

  5. 手写DAO框架(五)-DAO层实现

    -------前篇:手写DAO框架(四)-SQL执行--------- 前言 通过上一篇,可以通过传入sql和对应的参数,可以执行sql并返回结果.但是对于一个DAO框架来说,要尽量的面向对象编程,也 ...

  6. 手写DAO框架(六)-框架使用示例

    一.引入pom <dependency> <groupId>me.lovegao</groupId> <artifactId>gdao</arti ...

  7. 手写web框架之开发一个类加载器

    ackage io.renren.common; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUti ...

  8. 手写MQ框架(二)-服务端实现

    一.起航 书接上文->手写MQ框架(一)-准备启程 本着从无到有,从有到优的原则,所以计划先通过web实现功能,然后再优化改写为socket的形式. 1.关于技术选型 web框架使用了之前写的g ...

  9. 手写MVC框架(一)-再出发

    背景 前段时间把之前写的DAO框架(手写DAO框架(一)-从“1”开始)整理了一下,重构了一版.整理过程中看以前写的代码,只是为了了解实现,只是为了实现,代码写的有点粗糙.既然已经整理了DAO框架,索 ...

随机推荐

  1. HDU 5862Counting Intersections

    Counting Intersections Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  2. Android分包MultiDex原理详解

    MultiDex的产生背景 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt.DexOpt的执行过程是在第一次加载Dex文件的时候执行的 ...

  3. xshell暂停串口的打印【转】

    本文转载自:http://www.360doc.com/content/16/0311/10/7821691_541261680.shtml xshell不想CRT可以断开而停止打印,看这停下的打印信 ...

  4. 【Poj2960】S-Nim & 博弈论

    Position: http://poj.org/problem?id=2960 List Poj2960 S-Nim List Description Knowledge Solution Noti ...

  5. DVB-subtitle解析流程浅

    DTV包含SUBTITLE和TTX. PMT中分别有不同的描述符对应,如下图的TTX descripter=0x56.语言ISO-639="fin" subtitle descri ...

  6. openstack 杂记 备忘002

  7. Hadoop 的使用

    hadoop:hadoop启动:./sbin/start-dfs.shhadoop关闭:./sbin/stop-dfs.shbin文件用于在HDFS创建数据HDFS 中创建用户目录:./bin/hdf ...

  8. FTP FtpWebRequest 异步上传文件

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  9. 页面渐进式消失【JS代码】

    // 设定时间,页面慢慢变透明,直到消失 var opacityInterval = setInterval(function () { // 普通时间转为格林威治时间 var targetDate ...

  10. 【转】vue.js三种安装方式

    Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...