10 2017 档案
摘要:1、查询首先考虑在where和order by设计的列上建立索引,尽量避免全表扫描。 2、尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。 最好不要给数据库字段留null,尽可能使用not null填充数据库。备注、描述、评论之类的可以设置为 NULL,
阅读全文
摘要:普通模式整合 一、在pom.xml中引入redis的依赖 二、新建redis.xml文件 三、在spring的配置文件中引入redis.xml 四、编写dao层 五、编写service层 六、写测试类进行测试 哨兵模式(sentinel) 就一个配置文件独特一点 redis-sentinel.xml
阅读全文
摘要:我们实现Serialization接口,不能够生成serialVersionUID的解决方法。
阅读全文
摘要:一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,
阅读全文
摘要:先看看使用explain执行查询语句显示的列 1、id列: id相同,执行顺序由上至下 如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行。 id如果相同,可以认为是一组,从上往下顺序执行,在所有组中,id值越大优先级越高,越先执行。 2、select_type列: 这一列显示了对应行
阅读全文
摘要:当mybatis配置文件中只有一个数据源的时候,按照正常的事务注解形式@Transaction是没有问题的,但是当配置文件中有多个数据源的时候发现事务不起作用了,怎么解决这个问题呢?看下面的案例:
阅读全文
摘要:一、搭建maven环境,引入相关jar 参考demo 二、写web.xml 三、写springmvc的xml文件mvc-dispatcher-servlet.xml 四、写spring的配置文件applicationContext.xml 五、mybatis-config.xml文件 六、jdbc.
阅读全文
摘要:什么是责任链模式 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任
阅读全文
摘要:在InnoDB加锁前,为什么要先start transaction innodb下锁的释放在事务提交/回滚之后,事务一旦提交/回滚之后,就会自动释放事务中的锁,innodb默认情况下autocommit=1即开启自动提交 检索条件使用索引和不使用索引的锁区别: 检索条件有索引的情况下会锁定特定的一些
阅读全文
摘要:事务的隔离级别和锁机制: READ UNCOMMITTED(未提交读) 在这个级别,事务中的修改,即使没有提交,对其他事务也都是可见的,事务可以读取未提交的数据。(不加锁或只加共享锁) READ COMMITTED(提交读) 一个事务开始时,只能“看见”已经提交的事务所做的修改。也就是一个事务从开始
阅读全文
摘要:InnoDB的MVCC,是通过在每行记录后面保存三个隐藏的列来实现的其中的两个列一个保存了行的创建时间,一个保存行的过期时间(或删除时间)。当然存储的并不是实际的时间值,而是系统版本号(system version number): 1、DB_TRX_ID :6字节的事务ID,每处理一个事务,其值自
阅读全文
摘要:MyBatis3.0 添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除操作 一、创建student、teacher和stu_teach_rel三张张表 二、新建和表相关的实体类 三、新建映射关系 stud
阅读全文
摘要:多对一关联查询 一、数据库关系。article表和user表示多对一的关系 二、创建跟表对应关系的model 三、新建对应的mapper映射器组合 组合一: 组合二: 组合三: 四、在configuration.xml 配置别名和注册映射器: 五、测试 一对多关联查询 一、数据库关系。user表和a
阅读全文
摘要:<settings/> settings的配置内容 <typeAliases/> 别名 表 系统定义的typeAliases 别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _float
阅读全文
摘要:下面的解释中有一个databaseId属性: 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。新增,修改和删除都有这个属性 一、在configuration
阅读全文
摘要:独立索引: 独立索引是指索引列不能是表达式的一部分,也不能是函数的参数 例1: SELECT actor_id FROM actor WHERE actor_id+1=5 --这种写法,就算在actor_id上建立了索引,也不起效 例2: SELECT .... WHERE TO_DAYS(CURR
阅读全文
摘要:mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影响性能。 重复索引是指的在相同的列上按照相同的顺序创建的相同类型的索引,应该避免这样创建重复索引,发现以后也应该立即删除。但,在相同的列上创建不同类型的索
阅读全文
摘要:MyBatis内部提供了两个转化枚举类型的typeHandler给我们使用。 org.apache.ibatis.type.EnumTypeHandler 是使用枚举字符串名称作为参数传递的 org.apache.ibatis.type.EnumOrdinalTypeHandler 是使用整数下标作
阅读全文
摘要:场景一:有个java.util.Date在存入数据库的时候自动转换为timestamp时间戳,从数据库取值的时候把时间戳自动转换为java.util.Date 表结构 一、自定义typeHandler 直接实现 TypeHandler<T> 也可以继承 BaseTypeHandler<T>,我们选择
阅读全文
摘要:什么叫做覆盖索引? 在了解覆盖索引之前我们先大概了解一下什么是聚集索引(主键索引)和辅助索引(二级索引) 聚集索引(主键索引): 聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。 聚集索引的叶子节点称为数据页,聚集索引的这个特性决定了索引组织表中的数据也是索引的
阅读全文
摘要:懒汉式: 饿汉式: https://gitee.com/play-happy/base-project
阅读全文
摘要:步骤一: 创建一个maven工程,在pom文件中加载依赖 步骤二:在MySQL数据库中创建一张表 步骤三:创建mybatis的配置文件 configuration.xml 步骤四:新建model user.xml 下面对这几个配置文件解释下: 步骤五:测试 https://gitee.com/hua
阅读全文
摘要:1、什么叫做聚集索引呢? (图1) 如图所示,可以看到叶子节点包含了完整的数据记录,这种索引就叫做聚集索引 2、聚集索引的特点: 2.1 因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键,如果没有主键InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoD
阅读全文
摘要:需求:根据姓名进行排序,升序或者降序,如果名字一样,就按照id升序排序,用策略模式 步骤一: 定义一个Person对象 步骤二: 定义一个排序的接口 步骤三: 定义两个策略,升序(UpNameSort)和降序(DownNameSort) 步骤四: 定义SortEnviroment 步骤五:测试
阅读全文
摘要:策略模式的意义: 策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是弱连接的关系。 弱连接的特性使软件具有更强的可扩展性,易于维护,它大大的提高了软件的可重用性。 策略模式的组成: 抽象策略角色 : 通常由一个接口或者抽象类担当 具体策略角色 : 包装了相关的算法和行为 环
阅读全文