持久层
文章平均质量分 77
扶我起来我还要写代码
经世致用
展开
-
【随笔】mysql count(*) count(1)的补充
看极客时间的专栏《MySQL实战45讲》,14篇提到了MySQL聚合函数count。对于文中count(*)和count(1)的性能比较有一点争议。我把原文中关键点摘抄出来(更多内容,请购买专栏)。count(*)的实现方式你首先要明确的是,在不同的MySQL引擎中,count(*)有不同的实现方式。MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数,效率很高; 而InnoDB引擎就麻烦了,它执行count(*)的时候,需要把数据一行一行地从引擎里面原创 2020-09-22 17:18:46 · 229 阅读 · 0 评论 -
ERROR 1100 (HY000): Table was not locked with LOCK TABLES
官网地址:https://dev.mysql.com/doc/refman/8.0/en/lock-tables.htmlA session that requires locks must acquire all the locks that it needs in a singleLOCK TABLESstatement. While the locks thus obtained a...原创 2020-02-21 15:21:22 · 2669 阅读 · 0 评论 -
【mybatis】关联查询——mybatis一对多两种方式实现详解
一、数据库 演示的小demo涉及两张表,一张是Person表,记录用户基本信息,另一张是phone表,记录电话号码,Person的phoneID外键关联phone表id。此处示例涉及并不符合实际情况,一对多方式是一个号码有多个用户使用的(更符合实际情况的是一个用户有多个号码),原因是从一对一demo直接扒拉过来用的,见谅,不过也能体现mybatis关联查询一对多的细节了。1.原创 2015-04-29 15:06:06 · 22053 阅读 · 9 评论 -
【java】动态代理+ThreadLocal实现数据源及事务管理
一、前言 小demo只是思想的一个简单实现,距离用在生产环境还有一定距离,只是五一劳动节放假宅在家用来锻炼一下思维,不严谨的地方还望见谅。二、难点分析 JDBC数据源的规范来自java.sql.DataSource接口,里面就一个方法getConnection的两个重载(数据源的思想也已经很普遍了,这里就不再赘述,需要了解的请自行查找),三、实原创 2015-05-01 16:49:43 · 3593 阅读 · 2 评论 -
【mybatis】不靠谱程序员之mysql环境下mybatis数据源驱动重复加载
mybatis在tomcat环境下会产生驱动重复加载空耗性能原创 2015-05-06 16:10:46 · 2369 阅读 · 0 评论 -
【持久层】数据库事务基础——事务的隔离级别
内容导读: 前三节数据库事务、并发带来的风险以及数据库锁都是为了铺垫事务的隔离性。 事务的隔离性不是无缘无故就存在的,他的存在是为了解决某一类问题,带来某一些操作的便捷;解决的问题是指数据库并发操作中数据一致性保证,带来的便捷是指定义好隔离级别之后,数据库会为操作自动加锁(不同的隔离级别拥有不同的自动锁粒度),而不用每次操作都手动的加锁。 写着写着觉得没什么可写的,本...原创 2015-07-26 10:27:42 · 1622 阅读 · 0 评论 -
【Mysql】mysql查询超时JDBC源码浅析
JDBC查询超时源码分析和Mysql对超时的支持(Mysql指令KILL QUERY的含义)原创 2015-12-16 13:10:27 · 1773 阅读 · 2 评论 -
【持久层】java程序猿的JDBC知识点
一、基本操作 JDBC的基本操作,总结起来就是“注册驱动、获取连接、获取执行对象并执行SQL、获取结果集并处理、关闭资源”,每一个步骤都有一些东西值得沉淀。1. 注册驱动 a. DriverManager.registerDriver(Driver driver)会导致驱动重复注册问题; b. Class.forName进行驱动注册:累加在知识、静态代码块知识;原创 2016-02-18 11:41:05 · 1199 阅读 · 0 评论 -
【mybatis】mybatis JDBC事务细节
mybatis事务操作细节,没有贴源码,请自行查看原创 2015-09-01 01:05:53 · 3947 阅读 · 0 评论 -
【Mybatis】mybatis插件源码分析
一、基本概要 参见mybatis官方文档:点击打开链接 1. 快速开发; 2. 插件原理实现的主要技术; 3. 为什么插件只支持Executor、StatementHandler、ResultSetHandler、ParameterHandler四种类型?二、快速开发 mybatis插件开发极易上手,参见第一节中mybatis官方文档原创 2015-12-14 06:12:01 · 1305 阅读 · 0 评论 -
【mybatis】mybatis数据源源码剖析(JNDI、POOLED、UNPOOLED)
一、概述 二、创建 mybatis数据源的创建过程稍微有些曲折。 1. 数据源的创建过程; 2. mybatis支持哪些数据源,也就是dataSource标签的type属性可以写哪些合法的参数? 弄清楚这些问题,对mybatis的整个解析流程就清楚了,同理可以应用于任何一个配置上的解析上。 从SqlSessionFactoryBuil原创 2015-08-07 10:57:48 · 13870 阅读 · 4 评论 -
【MyBatis】MyBatis Tomcat JNDI原理及源码分析
一、 Tomcat JNDI JNDI(java nameing and drectory interface),是一组在Java应用中访问命名和服务的API,所谓命名服务,即将对象和名称联系起来,使得可以通过名称访问并获取对象。 简单原理介绍:点击访问tomcat已经集成该服务(内置并默认使用DBCP连接池),简单来说就是键值对的mapping,而且在tomcat服务器启动的首页c原创 2015-08-07 09:30:41 · 6931 阅读 · 0 评论 -
【mybatis】完全解读mybatis JDBC事务
前言 mybatis源码版本:3.2.7一、mybatis的发动机SqlSessionManager原创 2015-07-29 15:51:57 · 7812 阅读 · 2 评论 -
【持久层】JDBC详解之基本操作
一、概述 本文旨在传递更多JDBC的细节和原理。环境是Mysql,后续会继续介绍事务、数据源和获取数据库元信息。 本文涉及问题概览: 1. Class.forName这句代码做了什么? 2. Class.forName和ClassLoader.loadClass区别?二、详解 简单的JDBC操作,有以下几个步骤: 1. 注册驱原创 2015-07-08 00:43:46 · 1892 阅读 · 1 评论 -
关于PreparedStatement你知道多少
转载:点击打开链接序言 对应PreparedStatement相信大家都很熟悉,那么为什么要用PreparedStatement呢?也许你会回答PreparedStatement为预处理语句,可以提高数据库执行效率。也许还会回答用PreparedStatement可以防止SQL注入。那么再问下,你觉得你对PreparedStatement有足够的转载 2015-05-14 00:38:05 · 823 阅读 · 0 评论 -
Mybatis数据源与连接池
原文链接:点击打开链接(http://blog.csdn.net/luanlouis/article/details/37671851?utm_source=tuicool) 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。 本文转载 2015-04-16 09:41:56 · 1209 阅读 · 0 评论