预编译sql语句:预编译语句中动态数据可以使用问号代替
statrment适合执行静态sql语句,即:sql中没有拼接动态数据
preparedstatement适合执行动态sql
PreparedStatement在创建的时候就需要将预编译的sql语句传入,并发送给数据库生成对应的执行计划
数据库在收到sql语句时,会理解该sql语句并生成一个对应的执行计划,(生成执行计划开销很大)
但是若重复执行发送同样sql语句时,数据库会重用生成的执行计划,但是只要sql语句中有动态数据,哪怕语义一致,数据不同,也不会
重用执行计划,每次都会生成新的执行计划,为此,当有董涛数据,但是语义相同的sql要执行时应当使用预编译sql。
向连接池获取连接若连接池中没有可用连接时,该方法会阻塞当前线程,阻塞时间由连接池设置的maxwait决定,当阻塞过程中连接池有了可用连接时会立即将连接返回,若超时没有可用连接该方法会抛出异常。
连接池的连接对于close方法的处理时将连接的状态设置为空闲而非真的将其关闭