04.MyBatis特殊SQL执行

[TOC]一、模糊查询1.1 概述模糊查询使用通配符%(可以匹配任意个数字符)或通配符_(匹配一个任意字符)将查询信息进行模糊匹配,使用like关键字进行匹配查询,通过通配符前置、后置或前后置可以查询与部分信息匹配的数据。示例+----+--------+ | id | name | +----+--------+ | 1 | JONES | | 2 | SCOTT | | 3...

Java 2022-12-07 PM 655次 0条

03.MyBatis各种查询功能

[TOC]前言使用Mybatis进行查询的时候,查询出来的数据可能有一条数据,也可能是多条,我们就得根据返回数据的条数来指定返回类型,如果记录是多条,那么返回值类型就不能是实体类。如果查询出的数据只有一条,可以通过:实体类对象接收List集合接收Map集合接收,结果{password=123456, sex=男, id=1, age=23, username=admin}如果查询出的数据有多...

Java 2022-12-06 PM 820次 0条

02.MyBatis获取参数值的两种方式

[TOC]一、获取参数值的方式MyBatis获取参数值的两种方式:${}和#{}${}的本质就是字符串拼接,#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号。二、单个字面量类型的参数若mapper接口中的方法参数为单个...

Java 2022-12-05 PM 555次 0条

01.MyBatis核心配置文件详解

[TOC]前言Mybatis配置文件两大类:Mybatis 主配置文件:提供 Mybatis 全局设置的。包含的内容、日志、数据源、mapper 文件位置等信息。Mybatis 的 mapper 文件:用来写SQL语句。一个表/Mapper接口一个 mapper 文件。一、概述MyBatis的核心配置文件配置了MyBatis的一些全局信息,包含数据库连接信息和MyBatis运行时所需的各种特...

Java 2022-12-04 PM 758次 0条

58.CyclicBarrier介绍

[TOC]一、概述CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。这个屏障之所以用循环修饰,是因为在所有的线程释放彼此之后,这个屏障是可以重新使用的(reset()方法重置屏障点),这一点与CountDown...

Java 2022-12-03 PM 564次 0条

57.CountdownLatch介绍

[TOC]一、概述CountDownLatch(倒计时锁) 能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。它相当于是一个计数器,这个计数器的初始值就是线程的数量,每当一个任务完成后,计数器的值就会减一,当计数器的值为 0 时,表示所有的线程都已经任务了,然后在 CountDownLatch 上等待的线程就可以恢复执行接下来的任务。应用场景典型的应用场景就是当一个服务启动时,同...

Java 2022-12-01 PM 527次 0条

56.Semaphore介绍

[TOC]一、概述Semaphore是向外分发资源的许可证,可以允许一个或多个任务同时访问资源。Semaphore通过构造参数来指定许可证的数量;acquire方法阻塞式获取许可证;release方法释放许可证。可以将其比喻为地铁的安检,每当人流量高峰的时候,安检会先让几个人进去,然后拦住后面的人,待前面几人通过安检门后,会对后面的人用相同的方式放行。特点Semaphore(信号量)是一种计...

Java 2022-11-29 PM 648次 0条

55.StampedLock介绍

[TOC]前言ReadWriteLock适用于读多写少的场景,允许多个线程同时读取共享变量。但在读多写少的场景中,还有更快的技术方案。在jdk8以后,java提供了一个性能更优越的读写锁并发类StampedLock,该类的设计初衷是作为一个内部工具类,用于辅助开发其它线程安全组件,用得好,该类可以提升系统性能,用不好,容易产生死锁和其它莫名其妙的问题。本文主要和大家一起学习下StampedL...

Java 2022-11-28 PM 545次 0条

54.ReentrantReadWriteLock实现原理详解

[TOC]一、ReentrantReadWriteLock简单流程1.1 独占获取锁简单流程独占获取锁流程独占锁获取(writeLock写锁),首先判断是否有线程获取了锁,是否有线程获取了锁的判断通过读写锁中通过32位int类型state可以获取,其中低16位表示读锁,高16表示写锁。有读锁:直接排队阻塞。有写锁:还需要判断写锁线程是否是自己,如果是自己就是锁重入了,如果不是自己说明已经有其...

Java 2022-11-28 PM 640次 0条

53.ReentrantReadWriteLock应用之缓存

[TOC]一、缓存更新策略更新时,是先清缓存还是先更新数据库先清缓存,再更新数据库结果:造成查询的值和数据库中的值不一致先更新数据库,再清除缓存结果:造成A线程首次查询和后续查询得到不一致的结果,首次查询得到 x=1,后续查询发现已经清空了缓存,需要去数据库中查得 x=2补充一种情况,假设查询线程 A 查询数据时恰好缓存数据由于时间到期失效,或是第一次查询这种情况的出现几率非常小,见 fac...

Java 2022-11-27 PM 577次 0条